RITSEC CTF 2023 - assembly-hopping (shellcode)
Doesn’t everyone love assembly?
nc assembly-hopping.challenges.ctf.ritsec.club 1337
- [132 solves / 279 points]
Analysis
1 | Arch: amd64-64-little |
일단 보호기법이 아무것도 없다. 그리고 코드 분석을 해보면 gets
함수로 bof가 발생하고 아래와 같은 가젯을 제공해준다.
1 | push rbp |
Solve
이 문제는.. 풀이 방법을 설명하기가 어렵다..
rbp
자리에 AAAAAAAA
을 넣고 ret
자리에 jmp rsp
가젯을 넣어주었다. 그러니까 함수가 종료되는 시점에 실행되는 가젯 흐름을 보면 아래와 같다.
1 | leave |
leave
가 실행되면서 rbp
가 AAAAAAAA
로 바뀌고 ret
명령을 실행하면서 jmp rsp
가젯이 rip
에 들어가고 rsp
가 내려간다. 그러면 jmp rsp
가젯 뒤에 저장된 내용을 가리킨다. 이 자리에 쉘코드를 넣으면 된다.
Exploit Code
1 | from pwn import * |