old-41 풀이

2024. 2. 17. 02:07webhacking.kr

728x90

메인 페이지

파일 업로드 폼이 만들어져 있습니다

 

view-source

https://www.php.net/manual/en/function.error-reporting.php

 

PHP: error_reporting - Manual

I always code with E_ALL set.After a couple of pages of I made this function to make things a little bit quicker. Unset values passed by reference won't trigger a notice.

www.php.net

코드 상단 부분에 error_reporting()이라는 함수가 있어서 구글링을 해봤습니다

ini_set()과 함께 쓰이며, 에러 처리를 할 때 에러 문구와 파일 경로를 출력해 주는 역할을 한다고 합니다

파일이 업로드 된 경우에는 str_replace() 함수를 통해 . < > / 가 필터링됩니다

그리고 파일은 upload_dir이라는 경로에 복사되고, 파일 내용으로는 FLAG가 들어갑니다

upload_dir만 알면 파일을 열어 FLAG를 획득할 수 있습니다

 

error_reporting()

upload_dir을 어떻게 알아내는가...이게 문제인데, 파일 이름에는 글자수 제한이 있다고 합니다 (256글자)

이 제한을 넘겨서 파일 이름을 입력해주면 에러가 발생하면서 경로가 나오지 않을까 합니다

 

test.txt 파일 업로드 패킷

가지고 있던 파일 중 적당한 파일을 발견해서 업로드해봤습니다

위 사진에 있는 filename 부분을 257자의 아무 글자로 채워서 패킷을 보내줬습니다

 

Response

그랬더니 이런 Response가 왔습니다

Warning이 뜨면서 경로와 함께 제가 입력한 파일 명이 나왔습니다 (수많은 a들)

이 경로로 이동해 봤습니다

 

..?

이게 아닌가 봅니다

경로가 잘못된 것 같으니 왠지 있을 것만 같은 ./flag로 이동해 줍니다

 

URL
FLAG 획득 완료
문제 풀이 성공

 

728x90

'webhacking.kr' 카테고리의 다른 글

g00gle1 풀이  (0) 2024.02.26
old-35 풀이  (0) 2024.02.19
old-44 풀이  (0) 2024.02.15
old-34 풀이  (0) 2024.02.15
old-59 풀이  (0) 2024.02.15