-
[Webhacking.kr] 37번 풀이Wargame/webhacking.kr (old) 2019. 5. 7. 18:04
test.txt 파일을 업로드 해보았다.
test.txt 가 출력되었다. tmp-15~~ 이것도 파일이름인 것 같다.
소스 코드를 보았다.
소스를 해석해보면,
\$time에 현재시간의 timestamp가 저장되고, tmp/tmp-\$time 파일 내용은 127.0.0.1가 된다.
.number 파일 내용은 tmp 디렉터리 내의 파일 개수가 적히고, 파일이 생성될 때마다 갱신된다.
파일을 업로드하면 그 파일의 이름에 몇몇 문자를 공백문자로 치환해주고
해당 파일의 내용으로 나의 IP가 들어간다.
scandir 함수
지정된 경로에 있는 파일 및 디렉터리 반환
현재 시간과 일치하는 timestamp가 포함된 이름을 가진 파일에 적힌 IP주소의
7777번 포트로 비밀번호를 전송해준다.
tmp 디렉터리의 파일 개수가 30개 이상이되면 파일을 모두 삭제한다.
따라서, 자동으로 생성되는 tmp-시간 형태의 파일에는 127.0.0.1이 적혀있기때문에
127.0.0.1:7777로 비밀번호가 전송되고 있다.
해당 비밀번호를 알아내기 위해서는 내가 7777번 포트를 열고 파일의 내용으로 나의 IP주소를 넣어주어야 한다.
이미 자동 생성된 파일의 이름과 같은 이름을 가진 파일에 나의 IP주소를 넣어 업로드 해보았다.
그 후 해당 파일에 접근해보니, 파일이 덮어쓰기가 되어 나의 IP 주소가 들어간 것을 확인하였다.
파일 덮어쓰기가 가능하다는 점을 이용하면 될 것 같다.
우선, 7777번 포트를 열어주었다.
nc.exe를 이용하여 7777번 포트를 열고 대기한다.
nc -nvl -p 7777
시간에 맞춰 tmp-시간 파일을 업로드하였다. (tmp-1521635900)
시간에 맞게 파일을 올리는 것이 어렵기 때문에 Fiddler의 Composer 기능을 이용하여
여러번 반복 요청을 하였다.
1521635900 시간에 나의 7777번 포트로 비밀번호가 전송되었다.
날아온 비밀번호를 인증하면 문제가 풀린다.
'Wargame > webhacking.kr (old)' 카테고리의 다른 글
[Webhacking.kr] 39번 풀이 (0) 2019.05.07 [Webhacking.kr] 38번 풀이 (0) 2019.05.07 [Webhacking.kr] 35번 풀이 (0) 2019.05.07 [Webhacking.kr] 34번 풀이 (0) 2019.05.07 [Webhacking.kr] 33번 풀이 (0) 2019.05.07 댓글