Yozzang의 해킹일기 💻
article thumbnail
728x90

이번 포스트에서는 Python Challenge의 Level 22 문제에 대해 다루겠다.


문제를 클릭하면 다음과 같은 페이지가 출력된다.

Level 22

## 문제 해석 : 

조이스틱 사진이 출력되어 있다. 개발자 도구를 열어보면 다음과 같다.

개발자 도구

"white.gif"가 존재한 것을 알 수 있다. 해당 GIF 파일을 다운로드 해보면 다음과 같다.

white.gif

GIF 파일을 밝기를 조절해보면 아래와 같이 여러 개의 점이 존재한다는 것을 알 수 있다.

white.gif (밝기 조절)

해당 점들의 위치를 조사하고 이어보면 될 것 같다.

## 문제 풀이 : 

우선 파이썬을 통해 해당 파일의 프레임들을 출력해보겠다.

### 공격 코드 :

from PIL import Image

with Image.open("white.gif") as gif:
    for f in range(gif.n_frames):
        gif.seek(f)
        print(gif.getbbox()) # 상하좌우를 픽셀로 표현

### 실행 결과 : 

출력 결과

여러 쌍의 상하좌우가 출력된 것을 확인할 수 있다. 해당 좌표를 100을 기준으로 상하좌우로 움직이면서 출력해보겠다.

### 공격 코드 : 

from PIL import Image, ImageDraw

rst = Image.new("RGB", (500, 200))
draw = ImageDraw.Draw(rst)
x, y = 0, 100

with Image.open("white.gif") as gif:
    for f in range(gif.n_frames):
        gif.seek(f)
        left, upper, right, down = gif.getbbox()

        # 방향을 정한다.
        dx = left - 100
        dy = upper - 100

        # 움직임이 끝날 시, 우측으로 shift한다.
        if dx == dy == 0:
            x += 50
            y = 100

        x += dx
        y += dy

        draw.point([x, y])

rst.show()

### 실행 결과 : 

출력 결과

"bonus"라는 단어가 출력된 것을 확인할 수 있다.

### 최종 공격문 : http://www.pythonchallenge.com/pc/hex/bonus.html

### 실행 결과 : 

공격 성공

Level 23로 넘어간 것을 확인할 수 있다.

'Wargame > Python Challenge' 카테고리의 다른 글

Python Challenge (Level 24)  (0) 2022.09.24
Python Challenge (Level 23)  (1) 2022.09.22
Python Challenge (Level 21)  (1) 2022.09.20
Python Challenge (Level 20)  (1) 2022.09.19
Python Challenge (Level 19)  (0) 2022.09.18
profile

Yozzang의 해킹일기 💻

@요짱

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!