Yozzang의 해킹일기 💻
article thumbnail
728x90

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


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

Level 7

## 문제 해석 : 

중간에 픽셀이 존재하는 사진 한 장이 출력되어 있다. 해당 문제는 포렌식으로 접근하면 될 것 같다.

## 문제 풀이 : 

해당 이미지를 다운로드 하여 속성을 확인해보면 다음과 같다.

### 실행 결과  :

oxygen.png 속성

높이가 95인 것을 알 수 있다. 사진 속 픽셀은 중간 쯤에 있으니 대략 95 // 2에 위치한다고 볼 수 있다.

 

이어서 해당 픽셀의 RGB 값을 아스키코드로 출력해보도록 하겠다.

 

### 공격 코드 : 

from PIL import Image

imgfile = Image.open("oxygen.png")

for i in range(imgfile.size[0]):
    pixel = imgfile.getpixel((i, imgfile.height//2))
    print(pixel)

### 실행 결과 : 

1차 시도

픽셀 하나당 7픽셀이라는 것을 확인할 수 있다.

 

그럼 7픽셀씩 확인해보도록 다시 코드를 짜보겠다.

### 공격 코드 : 

from PIL import Image

imgfile = Image.open("oxygen.png")
rst = ""

for i in range(0, imgfile.size[0], 7):
    pixels = imgfile.getpixel((i, imgfile.height//2))
    if pixels[0] == pixels[1] == pixels[2]:
        rst += chr(pixels[1])

print(rst)

### 실행 결과 :

2차 시도

다음 레벨의 아스키코드가 출력한 것을 확인할 수 있다. 해당 아스키코드를 문자로 변환하면 다음과 같다.

### 공격 코드 :

asc = [105, 110, 116, 101, 103, 114, 105, 116, 121]
ans = ''.join([chr(i) for i in asc])
print(ans)

### 실행 결과 : 

url 출력

### 최종 공격문 : http://www.pythonchallenge.com/pc/def/integrity.html

### 실행 결과 : 

공격 성공

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

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

Python Challenge (Level 9)  (0) 2022.08.27
Python Challenge (Level 8)  (0) 2022.08.26
Python Challenge (Level 6)  (0) 2022.08.24
Python Challenge (Level 5)  (0) 2022.08.06
Python Challenge (Level 4)  (0) 2022.08.05
profile

Yozzang의 해킹일기 💻

@요짱

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