이번 포스트에서는 Python Challenge의 Level 19 문제에 대해 다루겠다.
문제를 클릭하면 다음과 같은 페이지가 출력된다.
## 문제 해석 :
인도 사진이다. 개발자 도구를 확인해보면 아래와 같이 MIME 타입의 이메일이 보인다.
이메일 본문의 데이터를 이용하여 푸면 될 것으로 보인다.
## 문제 풀이 :
우선 데이터를 파일로 저장한 다음에 파이썬을 통해 indian.wav로 변경해보겠다.
### 공격 코드 :
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)
### 실행 결과 :
파일을 재생해보면 "sorry"라는 말이 들린다. sorry.html로 접속해보겠다.
### 공격문 : http://www.pythonchallenge.com/pc/hex/sorry.html
### 실행 결과 :
뭔가 잘못된 방향으로 가고 있는 것 같다. 여기서 힌트는 바보 해당 사람은 indian이라는 것이다. indian은 endian로 볼 수도 있으니 해당 파일의 endian 타입을 바꿔줘야 한다. 현재는 리틀엔디안이므로 빅엔디안으로 바꿔주면 된다.
### 공격 코드 :
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()
### 실행 결과 :
"you are an idiot"라는 말이 들린다. idiot.html로 접속해보겠다.
### 공격문 : http://www.pythonchallenge.com/pc/hex/idiot.html
### 실행 결과 :
아래의 버튼을 클릭하면 다음 레벨로 이동할 수 있다.
### 최종 공격문 : http://www.pythonchallenge.com/pc/hex/idiot2.html
### 실행 결과 :
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 |