반응형
KnightCTF 2023 Rev - Help Jimmy Writeup
공부 목적으로 작성된 글입니다.
먼저 파일은 elf 파일이다. 먼저 IDA freeware로 디컴파일부터 했고 코드는 간단했다.
메인함수를 보면 숫자를 입력할 수 있었고 1은 정글, 2는 바다, 나머지는 잘못된 입력으로 처리되었다. 분석은 다했었고 필자는 x64, x32, 올리디버거만 사용해서 gdb를 통한 코드 수정이나 기드라를 통한 코드수정을 해본 적이 없었다. 경험부족으로 인해 패치를 못해서 풀지 못했다.
핵심은 위 코드이다. 보면 시작하고 나서 jz를 통해 string들과 입력 코드가 실행되는 곳으로 이동한다. 이동한 곳에 flag로 보이는 게 없기 때문에 이동하지 않은 곳에 flag가 있을 것이라고 예상했다.
이동하지 않은 경우에 sub_158B 함수가 실행된다. 원리를 알았으니 기드라로 값을 바꿔보자.
원래 CMP 부분이 EAX랑 비교해서 참이면 정상적으로 작동하고 참이 아니면 flag를 출력한다. 그래서 EAX를 EBX로 바꾸면 거짓이 나올것이라고 생각했고, 바꾸고 실행해 보니 된다!
NOP으로 채워넣어도 보고, zf값을 바꾸려고 엄청 노력하고 다 해본 것 같은데 안돼서 2박 3일 걸렸다. elf가 아니면 x64로 금방 할 수 있는데..
ida pro가 너무 쓰고싶다. 어쨌든 기드라를 좀 배웠다.
728x90
'Reversing' 카테고리의 다른 글
wolvctf2023 baby-re Writeup (0) | 2023.03.20 |
---|---|
b01lers CTF padlock Writeup (0) | 2023.03.20 |
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 |