通过程序try/catch抛出异常之绕过canary pwn121

一种新的姿势:程序try/catch抛出异常之绕过canary

我前面发了不少关于绕过canary的姿势,先总结一下,现在绕过canary的姿势有泄露,爆破,格式化字符串绕过,多线程劫持TLS绕过,
stack_smashing,数组越界等等,今天介绍一种新的姿势,就是程序处理异常时,如果异常被上一个函数的catch捕获,那么上个函数的rbp就会变成上这个函数的rbp,详细可以看看处理异常的过程。
https://blog.csdn.net/qq_31865983/article/details/97387879
这里就加以利用

首先还是查看保护

nx保护关闭我们64位ida载入看一下

里面有格式化字符串漏洞,栈溢出,和堆溢出,但是仔细看的话都不能很好的利用

这里我发现一个漏洞仔细看这个函数有一个整数溢出

之后我们就可以利用栈迁移把我们想要执行的数据放入rbp指的地址,这样就可以泄露出libc地址然后进行one_gadget

然后上一个函数的leave_ret 和这一个函数的leave_ret实现栈迁移

posted @ 2024-04-13 15:04  CH13hh  阅读(40)  评论(0编辑  收藏  举报