2013 RoboAuth 리버싱 문제 개요
RoboAuth문제는 hack.lu ctf 때 나온 리버싱 문제 중 한 문제이다.
https://github.com/ctfs/write-ups-2013/tree/master/hack-lu-ctf-2013/reversing/RoboAuth
문제는 위 링크에서 다운로드를 할 수 있다.
오른쪽 부분에 다운로드를 받는 버튼이 있으니 클릭하고 다운로드하기를 바란다.
exe파일을 실행해보면 로봇 그림이 출력되고 패스워드를 입력하도록 유도한다. 이 문제는 패스워드가 2개를 찾아야 한다. flag는 password1_password2이다.
목표를 알았으니 이제 프로그램을 리버싱해보자.
RoboAuth 해킹대회 문제 풀이
문제 파일을 x32dbg에 붙여보았다. 시작점은 401BF0에서 시작한다. 먼저 search for strings로 문자열을 확인해보자.
strings를 확인해보면, 401B75에서 "You passed level1!"라는 문자열이 있다. 첫 번째 비밀번호를 찾았을 때 출력되는
문자열로 보인다. 따라서 401B75로 가서 코드를 확인해보자.
보면 strcmp로 문자열을 비교하고, 테스트한다. 401B73에서 점프를 안 하게 되면 성공 메시지가 출력되는 것이다.
따라서 브레이크 포인트를 걸고 실행해보자.
코드를 보면 strcmp에서 예시로 넣은 값과 "r0b0RUlez!"를 비교하는 모습이 보인다. 따라서 첫 번째 패스워드는
"r0b0RUlez!"이다.
첫 번째 비밀번호가 통과되고 두 번째 비밀번호를 입력하도록 유도한다. 이때 다시 search for strings를 통해 문자열을
확인해보자.
strings를 보면 "You win. ~"라는 문자열이 보인다. 4015CF 주소를 확인해보자.
확인해보면 1번 비밀번호를 찾을 때와 똑같이 함수를 호출한 후, eax를 비교한다. 점프를 하지 않으면 성공 메시지가
출력된다. 실행을 한 다음 4015C6에서 F7을 눌러서 함수가 어떻게 작동하는지 확인해보자.
40155B를 보면 cmp를 통해 예시로 넣었던 abcdefg와 패스워드2를 반복문을 통해 비교한다. 따라서 이 부분을 반복하다 보면, 패스워드 2를 확인할 수 있다.
따라서 flag는 r0b0RUlez!_w3lld0ne이 정답이다.
'Reversing' 카테고리의 다른 글
KnightCTF 2023 Rev - Help Jimmy Writeup (0) | 2023.01.27 |
---|---|
Knight CTF 2022 Reversing Droid Flag Wrteup (0) | 2023.01.22 |
KnightCTF 2022 Baby Shark writeup (0) | 2023.01.19 |
irisCTF 2023 baby reversing writeup (0) | 2023.01.11 |
NahamCon CTF 2022 babyrev writeup (0) | 2022.11.15 |