【Pwn1】栈溢出+覆盖判断条件练习题
题目:
通过网盘分享的文件:pwn1
链接: https://pan.baidu.com/s/1wbcX-sBng65_mNA0vrIKqQ?pwd=1234 提取码: 1234
(手机打开转存效果更佳)
知识点:栈溢出理解
先来复习一下,栈的结构和参数存储的位置

静态分析

把a1替换为0x61616161

gets() 函数不会限制用户输入的数据长度,而变量 s 的大小不是无限的
s输入的目的是替换 a1的值,将 a1 改写为 0x61616161,让if判断成立。
我们知道函数参数在栈中是在EIP(返回地址)的上面(地址的上面,高地址)
现在我们选择使用cyclic去预判(IDA有时候显示的不准确,汇编层面可以看s局部变量存储方式,如果是带有ebp寄存器参与可能显示不准确)

cyclic结合gdb的方式


‘A’*28 + EBP值替换 + 返回地址(EIP) + 0x61616161
EXP
1 | from pwn import * |