이번 포스트에서는 Python Challenge의 Level 19 문제에 대해 다루겠다.
![](http://t1.daumcdn.net/tistory_admin/static/images/xBoxReplace_250.png)
문제를 클릭하면 다음과 같은 페이지가 출력된다.
![](http://t1.daumcdn.net/tistory_admin/static/images/xBoxReplace_250.png)
1. ## 문제 해석 :
인도 사진이다. 개발자 도구를 확인해보면 아래와 같이 MIME 타입의 이메일이 보인다.
![](http://t1.daumcdn.net/tistory_admin/static/images/xBoxReplace_250.png)
이메일 본문의 데이터를 이용하여 푸면 될 것으로 보인다.
2. ## 문제 풀이 :
우선 데이터를 파일로 저장한 다음에 파이썬을 통해 indian.wav로 변경해보겠다.
### 공격 코드 :
<python />
import base64
with open("level_19.txt", "r") as f:
data = f.read()
data = data.replace("\n", "")
data = base64.b64decode(data)
with open("indian.wav", "wb") as f:
f.write(data)
### 실행 결과 :
![](https://blog.kakaocdn.net/dn/bjeWy3/btrMgmYbIF7/pTf8QJuOSJwc3AkRnbfzak/img.png)
파일을 재생해보면 "sorry"라는 말이 들린다. sorry.html로 접속해보겠다.
### 공격문 : http://www.pythonchallenge.com/pc/hex/sorry.html
### 실행 결과 :
![](https://blog.kakaocdn.net/dn/b9d4Yl/btrMju75Hqi/lBwBhT2owf1csaBJJL0tF1/img.png)
뭔가 잘못된 방향으로 가고 있는 것 같다. 여기서 힌트는 바보 해당 사람은 indian이라는 것이다. indian은 endian로 볼 수도 있으니 해당 파일의 endian 타입을 바꿔줘야 한다. 현재는 리틀엔디안이므로 빅엔디안으로 바꿔주면 된다.
### 공격 코드 :
<python />
import wave
with wave.open("indian.wav", "rb") as w:
r = wave.open("result.wav", "wb")
r.setnchannels(w.getnchannels())
r.setsampwidth(w.getsampwidth()//2)
r.setframerate(w.getframerate()*2)
frames = w.readframes(w.getnframes())
wave.big_endiana = 1
r.writeframes(frames)
r.close()
### 실행 결과 :
![](https://blog.kakaocdn.net/dn/mY8f9/btrMi3DnC5k/v7DxOgEAl5mYHatKoIHBik/img.png)
"you are an idiot"라는 말이 들린다. idiot.html로 접속해보겠다.
### 공격문 : http://www.pythonchallenge.com/pc/hex/idiot.html
### 실행 결과 :
![](https://blog.kakaocdn.net/dn/loOmG/btrMgmxdjlE/D1oBjyqGGkrDJqPBvhIY6K/img.png)
아래의 버튼을 클릭하면 다음 레벨로 이동할 수 있다.
### 최종 공격문 : http://www.pythonchallenge.com/pc/hex/idiot2.html
### 실행 결과 :
![](https://blog.kakaocdn.net/dn/bEzBRp/btrMjDqpEQU/WIRkeaAp0MjamNWrRmiJy0/img.png)
Level 20로 넘어간 것을 확인할 수 있다.
'Wargame > Python Challenge' 카테고리의 다른 글
Python Challenge (Level 21) (1) | 2022.09.20 |
---|---|
Python Challenge (Level 20) (1) | 2022.09.19 |
Python Challenge (Level 18) (0) | 2022.09.17 |
Python Challenge (Level 17) (0) | 2022.09.16 |
Python Challenge (Level 16) (0) | 2022.09.15 |