본문 바로가기

스터디/CTF

ctf 공부 11일차

 

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