pwnable.kr write up 之 sample login

作为一个萌新,能看懂真是不容易。

这题很明显是一道溢出题,auth函数中的memcpy有溢出。因为把input复制到v4上,v4在栈中,长度为8.[bp-8h]。然而题目要求的输入不能超过12位,这样你只能够得到ebp,无法一次性把ret addr也给改了,这就很蛋疼了。(需要注意的是题目要求输入的是经过base64encode之后的字符)。而我们想要的bin/sh在程序中已经有了,就在correct那里,所以想办法跳转到那个位置就可以了。首先要控制esp和ebp,利用溢出直接改写掉ebp,让他指向input的地址。等到下一个ret时,我们就可以控制eip了。很神奇是不是。具体就像这样。

payload的组成由三部分,第一部分四个字节,覆盖v4,第二个部分是bin/sh的地址,第三个部分就是input的地址。

首先,payload会覆盖ebp,使ebp指向input的地址,然后,在第一次ret的时候,由于ebp被成功修改,变成input的地址,

重点来了,到了下一个ret的时候,由于ebp已经在input那个位置了,所以esp会变成ebp+4,也就是bin/sh的地址,这也就是eip的下一条指令,成功实现了跳转。

果然要够猥琐才行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值