
해당 바이너리를 실행하면 위와 같은 숫자들이 출력된다.
IDA 분석

위의 코드를 확인해보면 [rbp+var4]의 값이 5와 같아야 "Nice!"라는 문구를 출력한다. 따라서 [rbp+var4]의 값이 5와 같아지도록 gdb를 활용하여 수정해야한다.
pwndbg 디버깅
일단 cmp [rbp+var4], 5가 있는 주소로 이동해야 한다.
ida에서 해당 주소를 확인해보면 0x00000000000015AA인것을 알 수 있다.

디버깅을 하기 앞서서 checksec 명령어를 통해 PIE 여부를 확인해보면 PIE가 enabled 되어 있는 것을 확인할 수 있다.
따라서 vmmap을 통해 해당 바이너리의 시작점을 확인한다. 따라서 0x00000000000015AA + 0x555555554000를 연산한 주소에 bp를 걸어준 뒤에 해당 함수로 이동해야한다.
0x00000000000015AA + 0x555555554000 = 0x5555555555AA

위와 같이 bp를 걸어주면 잘 이동된 것을 확인할 수 있고, [rbp - 4] = 5 조건을 만족 시키기 위해
set *(int *)($rbp-4)=5 명령어를 통해 해당 값을 5로 수정해주면

위와 같이 flag를 획득할 수 있다.
'CTF & Wargame(REVERSING)' 카테고리의 다른 글
| [dreamhack] level 1 Collect Me (0) | 2025.03.09 |
|---|---|
| [dreamhack] level 1 Stop before stops! (0) | 2025.03.09 |
| [dreamhack] level 1 Easy Assembly 문제 (0) | 2025.03.09 |
| [dreamhack] level1 legacyopt 문제 (0) | 2025.03.09 |
| [dreamhack] level1 Recover (0) | 2025.03.06 |