[Problem]


문제를 살펴보면 벌 한마리가 꿀빨고있다.

여기서 벌을 눌러보면 ../return/good.html로 redirect 되는 것을 확인 할 수 있다. 물론 소스 상에서도 확인 가능하다.



그리고 소스를 확인 해 보면 위와 같은 주석이 달려있다.


[Scenario]

2번째 그림에서 보이는 un과 pw의 헤더 부분인 'BZh91AY&SY'를 검색해보면 bz로 압축된 메시지인 것을 알 수 있는데, python의 bz2 모듈을 이용하여 decompress 해준다.


[Payload]

#coding: utf-8
import bz2

id = 'BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!\x9ah3M\x07<]\xc9\x14\xe1BA\x06\xbe\x084'

pw = 'BZh91AY&SY\x94$|\x0e\x00\x00\x00\x81\x00\x03$ \x00!\x9ah3M\x13<]\xc9\x14\xe1BBP\x91\xf08'

decompressed_id = bz2.decompress(id)
decompressed_pw = bz2.decompress(pw)
print decompressed_id
print decompressed_pw

id : huge

pw : file




'Wargame > PythonChallenge' 카테고리의 다른 글

[PythonChallenge] Level10  (1) 2017.02.15
[PythonChallenge] Level9  (0) 2017.02.15
[PythonChallenge] Level7  (0) 2017.02.14
[PythonChallenge] Level6  (0) 2016.06.28
[PythonChallenge] Level5  (0) 2016.06.27
OverTheWire_Wargame Bandit

[ level12 -> level13 ]




이번 문제는 data.txt파일이 hexdump로 제공되며, 압축이 연속적으로 걸려있다고 하네요. 이를 /tmp에 새 이름으로 폴더를 만든 후 거기서 문제를 진행하라고 합니다. 그대로 따라해주도록 하죠.



/tmp/fstr3am 아래에 data.txt 파일을 넣어주었습니다.



data.txt 파일의 hexdump입니다. 헤더를 보면 1f8b 0808로 시작하는 것을 알 수 있는데, 이는 gzip의 파일 포맷입니다. hexdump를 바이너리화 시켜주면서 파일명의 뒤에 .gz을 불여주도록 하죠. 이 때 사용하는 툴은 xxd입니다. -d 옵션을 주어 출력해주면 바이너리 파일이 생성됩니다.


생성된 data.txt.gz을 gzip -d 옵션으로 압축 해제를 해주면 다시 data.txt 파일이 나타납니다.

이러한 형식으로 다중 압축이 되어 있는데, 이 문제 같은 경우 3가지의 압축 방법이 적용되어 있습니다.

위에서 설명한 헤더를 가지고 있는 gzip,

그리고 바로 아래 그림에서 볼 수 있는 425a 헤더를 가지고 있는 bzip2,



마지막으로 헤더에 파일명을 가지고 있으며, 아래 섹션에서는 해당 파일 hex값이 나타나는 tar 압축입니다.



이런식으로 하나하나 압축을 풀어 나가다 보면 마지막에는 data8.bin이 남게 되며, 이 파일을 읽어내면 key값을 얻어 낼 수 있습니다.






P.S - xxd로 파일 헤더를 볼 필요 없이, file 명령어를 이용하면 어떤 압축 포맷인지 바로 알 수 있다고 합니다.... 쮸륵..


+ Recent posts