728x90
이번 포스트에서는 Python Challenge의 Level 3 문제에 대해 다루겠다.
문제를 클릭하면 다음과 같은 페이지가 출력된다.
## 문제 해석 :
"양쪽에 정확히 세 명의 큰 보디가드에 둘러싸인 작은 글자 하나"라는 문구가 적혀 있다. 여기서 작은 글자는 알파벳 소문자, 큰 보디가드는 알파벳 대문자를 뜻한다.
## 문제 풀이 :
페이지의 소스를 확인해보니 아래와 같이 주석 처리된 긴 문장이 있다.
대충 훑어보니 영어 알파벳으로 이루어진 것을 알 수 있다. 아마 해당 주석문에서 다음 문제의 키가 존재하는 것 같다.
그럼 우리는 힌트를 통해 3개의 대문자 사이에 존재하는 1개의 소문자가 뭐뭐 있는지를 알아내면 된다. 여기서는 파이썬의 정규식을 활용하여 쉽게 구할 수 있다.
### 공격 코드 :
import re
file = """주석문"""
result = re.findall('[a-z][A-Z]{3}[a-z][A-Z]{3}[a-z]', file) # aAAAaAAAa 모양을 가진 문자열 찾기
result = re.findall('[A-Z][a-z][A-Z]', ''.join(result)) # AaA 모양을 가진 문자열 찾기
result = re.findall('[a-z]',''.join(result)) # 소문자를 찾기
print('Level 4\'s URL is' , ''.join(result))
### 실행 결과 :
해당 문자열을 URL에 대입해서 실행해보겠다.
### 공격문 : http://www.pythonchallenge.com/pc/def/linkedlist.html
### 실행 결과 :
linkedlist.php가 출력된 것을 확인할 수 있다. 해당 페이지로 접속을 해보겠다.
### 최종 공격문 : http://www.pythonchallenge.com/pc/def/linkedlist.php
### 실행 결과 :
Level 4로 넘어간 것을 확인할 수 있다.
'Wargame > Python Challenge' 카테고리의 다른 글
Python Challenge (Level 5) (0) | 2022.08.06 |
---|---|
Python Challenge (Level 4) (0) | 2022.08.05 |
Python Challenge (Level 2) (0) | 2022.08.01 |
Python Challenge (Level 1) (0) | 2022.07.31 |
Python Challenge (Level 0) (0) | 2022.07.30 |