[드림핵] Check Function Argument

리안·2024년 2월 7일

Reversing

목록 보기
12/13

이 문제 풀었다. 으아악 어려웠당

IDA에서 살펴본 main 함수이다.

Below function takes the flag as an arg :)
Can you see that?

만을 출력하고 프로그램이 종료된다. 문제 설명에 나와있었듯 동적디버깅 하며 flag를 확인해야할 것 같다. 아마... 4015E2에 bp 걸고?!

gdb로 메인 함수 확인하려고 했더니, 찾을 수 없다고 한다. 아마 entry point가 main이 아니어서 그런 것 같은데... 사실은 이거 어떻게 하는지 모르겠다!!!! main에서 주소 찾아서 bp 걸어야 하는데......

readelf로 entry point 확인하고 IDA에서 보면

음... main을 찾아가야하는데... disas 명령어를 어떻게 써야할지 잘 모르겠다링...

왜안되는데. 이렇게하면 된다매.

...그래서 그냥 IDA에서 찾은 함수에 bp 걸었다. 어차피 main도 그렇게 찾았으니까 똑같은 거 아녀,,,

0x4015e0에 bp 걸고 실행시켜보니 Below function takes the flag as an arg :) 까지만 출력한다. 즉!

여기까지 실행이 되었을 것이라는 뜻! qword_4040D0에 있는 값을 rax에 저장하고, rax에 있는 값을 rdi에 저장하였다. info reg로 레지스터 상태를 확인해보면

역시 rax 값과 rdi 값이 일치한다. rax 값을 확인해보자. flag가 저장되어있으니 아마 String일 것이다.

꺄~ 차쟈따. 역시 rax 값과 rdi 값은 같았다...

근데 이렇게 하는 거 맞아?ㅠㅠ

flag: DH{63db030352ca9f9f5e6b8a59c0527bee}

0개의 댓글