int_overflow的WP(整数溢出)

攻防世界PWN

int_overflow的WP

基本三步

checksec,file,执行文件在这里插入图片描述
可以看出是个32位文件,且开了NX和RELRO。
之后扔到32位IDA pro 中查看
在这里插入图片描述
main函数看不到flag和溢出点,就每一个函数都看一下,
在下面这个函数看到了flag,
在这里插入图片描述
点击 what_is_this函数,得到函数地址0X804868B
在这里插入图片描述
在函数check—passwd,看起来好像有个溢出点,但不知道是什么溢出
看了一下其他大佬的WP,发现是整数溢出,有兴趣的,可以去这个博客看一下(https://blog.csdn.net/xzli8_geo/article/details/83794268)
V3是用一个一字节,8bit 的变量存储 password 的长度。
而8bit最大数字是2^8-1 = 255=二进制(11111111)。
passwd的要求是长度为4~8位。
257转换16进制是0x101,8bit位,变成了0x01,就是1,
又因为4~8位通过,最后得出257+3,257+7可通过检测
可以利用整数溢出变为260~264
后面存在一个字符串拷贝函数,点击一下。

在这里插入图片描述
在这里插入图片描述
发现leave指令(leave 指令相当于于 mov esp,ebp
和 pop ebp 两条指令的组合)相当于有个出栈操作,就多出来了
4位字节,这四个字节也要覆盖,才能转指向 what_is_this 函数
就在0x14,所以0X14 + 4 = 0X18。
在这里插入图片描述

看一下这个check—passwd函数是怎么调用的,打开login函数
在这里插入图片描述
发现login中可以接受最大为0x199就是409长度的passwd,远远大于
256,可以使用整数溢出,我选择263位数,263-0x18-4=235
则exp为
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值