본문 바로가기

해킹/해킹 기법

[2주차] 미스터 브루트 문제 풀이 CTF

CTF 과제를 풀면서 들어갈 때마다 ctrl + shift + del 를 하는 습관이 생긴 것 같다

 

쿠키를 지웠을 때 session id를 새로 발급받는 것으로 보아 4번 문제에서 login을 했다는 정보가 쿠키로 남아있나보다

 

6번 문제는 미스터 브루트라는 문제다

 

처음 들어가면 이런 창이 뜬다

HTTP 히스토리를 한번 살펴보자

 

첫 화면에서 새로고침을 누르면 이런 페이지가 불러온다

아직은 별 단서가 없는 것 같고

 

login.php에서 index.php로 repeater를 통해 바꿔보았지만 아무런 소득이 없었다

 

1000이라는 숫자를 잡아 한번 대입해보자

1000 입력!

그럼 Login Fail.... 이라는 alert가 뜨면서 url이 checkOTP.php?otpNum=1000 이라고 바뀌는 것을 볼 수 있다

 

그럼 저길 손 보면 1000부터 9999까지의 수를 Brute force (무차별 공격 대입) 할 수 있겠구나

해당 URL이 있는 쪽을 HTTP 히스토리에서 마우스 오른쪽 클릭 후 Intruder로 보냅니다

 

보내보면 burp suite가 알아서 여기 작업하는 게 좋지않을까? 하는 부분에 표시가 되어있습니다

근데 아니므로 Clear로 초기화 시켜줍니다

저희는 otpNum='숫자' 라고 되어있는 부분을 순차적으로 대입할 것이기 때문에 숫자 부분만 드래그 해줍니다

 

그 후 Add 클릭

Payloads를 클릭 후 type을 Numbers로 지정해주자 1000부터 9999까지의 범위의 수를 넣을 거니깐

1000부터 9999까지의 범위를 다 넣기에는 너무 처리속도가 오래 걸리기 때문에 노가다 스럽긴 하지만

1000부터 1100까지의 숫자 그 다음 1100~1200 숫자 이렇게 잘라서 넣기로 했다

 

그런데 운 좋게도 1021에서 Length가 다른 응답을 발견!

 

비밀번호를 획득했다

성공!!!! 풀지 말라고 하신 1번 문제를 제외하고는 모든 ctf 문제를 풀어냈다

 

-------------------------------------------------------------------------------------------------------------------------------------

 

** 보완 아이디어

 

이번 답이 1021로 시작으로 잡은 1000과 굉장히 가까웠기 때문에 금방 구할 수 있었지만 사실 후반대에 숫자가 위치해있다면 intruder의 처리 속도가 매우매우매우 느리기 때문에 시간과의 싸움이 된다

이럴 때는 파이썬으로 스크립트를 짜서 결과를 보는 것이 빠르다고는 하는데, 이 코드도 한번 알아봐야겠다