2019.11.6 unctf 的pwn题——简单绕过pie

这篇安全客关于pie和bapass绕过写的蛮好的!
2019.11.6 unctf 的pwn题——简单绕过pie_第1张图片
2019.11.6 unctf 的pwn题——简单绕过pie_第2张图片
2019.11.6 unctf 的pwn题——简单绕过pie_第3张图片
看到函数最后返回到v1(),而且上一个函数的开辟的空间比后一个函数开辟的函数大,我们想到可以在前一个函数中提早将后门函数布置好,因为弹栈并不会是栈中的数据变化,除非往栈中写数据。
我们现在就通过gdb我们需要往栈的拿个位置写后门函数。
2019.11.6 unctf 的pwn题——简单绕过pie_第4张图片
2019.11.6 unctf 的pwn题——简单绕过pie_第5张图片
2019.11.6 unctf 的pwn题——简单绕过pie_第6张图片
我们可以看见第一个数组的位置和后面 的v2()之间隔了0xc个字节。还有需要注意的是程序是将一个函数右移16位(也就是右移2个字节,我们能接收前两个字节,后面的两个字节,有3位是确定的)然后转为10进制打印出来。所以我们在接收后要将其逆过去。
在pie中地址的后三位是绝对不会改变的,所以我们需要爆破倒数第4位。
EXP:
2019.11.6 unctf 的pwn题——简单绕过pie_第7张图片

你可能感兴趣的:(pwn)