HackCTF
Reversing - Welcome_REV
안녕 리버싱.
실행파일이라고 한다.
실행해보니 패스워드를 달라고 해서, 임의의 문자를 인자로 주면서 실행해주니 틀린 패스워드라고 한다.
gdb로 열어서 main코드들을 확인해보면 main+77지점에 check_password라는 구간이 있다. 패스워드를 체크해주는 것 같으니 bp를 걸고 스택을 확인해주면 될 것 같다.
check_password하는 구간에 bp를 걸고, aaaaa를 인자로 주면서 실행한다.
함수 내부로 들어가기 위해 si를 입력해준다. 이후 계속 ni check_password 내부 코드 실행해보다가 너무 길어서 포기했다.. 명령어가 무려 539줄에 cmp도 되게 많았다..
IDA로 열어주었다. main함수의 구조를 보면, 아까 봤던 2가지 출력 결과를 내는 조건을 포함해서 총 3가지로 분기되는 것 같았는데, "Congrats, now where's my flag?"를 보아 password를 맞춰도 flag를 출력해주는 것은 아닌 것 같았다.
결국 password로 설정되어있는 것을 알아야 할 것 같아 check_password 함수의 코드를 확인했다.(f5누름) 엄청 코드가 길어서 분석하기 싫은 마음에, 보이는 문자열을 base64로 혹시나 하는 마음에 디코딩해보았다.
저 긴 코드들이 base64로 디코딩하는 거였다보다. flag획득.
오늘의 교훈 |
1. 의심되면 그냥 해볼 것. 의외로 바로 나올 수도 있다. 2. 코드를 분석하려는 열의를 가질 것. |
'스터디 > CTF' 카테고리의 다른 글
ctf 공부 11일차 (0) | 2021.07.17 |
---|---|
ctf 공부 10일차 (0) | 2021.07.14 |
ctf 공부 9일차 (0) | 2021.07.13 |
ctf 공부 8일차 (0) | 2021.07.12 |
ctf 공부 7일차 (0) | 2021.07.11 |