WP_OVERFLOW2

拿到程序,首先放到我们的kali里面看看是多少位的程序,然后在看看有没有什么安全属性

64位程序,并且开启了RELRO,NX

也就是说,这道题我们需要使用ROP绕过

使用ida64打开这个程序,对这个程序的伪代码进行分析

首先看看main函数

发现最开始定义的buf是32个字节

然后在memset中讲buf给清空了,然后read函数讲100字节的数据丢给了buf,这里可以产生栈溢出漏洞

我们在函数列表中可以发现我们无法找到/bin/sh这个函数,这里有两个方法可以找到bin/sh

  1. shift+F12,可以找到一些关键词
  2. 使用ROPgadget进行过滤

我们看第一种方法的效果

然后我们在看到第二种方法的效果

知道了/bin/sh的地址以后

我们还需要找system的地址

现在我们有了system的地址,/bin/sh的地址也有的,我们要将/bin/sh的地址传递给system需要知道RDI寄存器的地址

这里是这样解释的

system()函数的第一个参数需要通过RDI寄存器传递。如果没有使用pop rdi; ret的ROP gadget,就无法将/bin/sh字符串的地址加载到RDI寄存器中,也就无法调用system()函数。

这里我们需要继续使用到ROPgadget了

为什么是POP rdi而不是直接rdi

原因:pop rdi 是一条汇编指令,它的作用是将栈顶的值弹出并存储到寄存器 RDI 中。而 rdi 是 RDI 寄存器本身。

Exp构造:

随机推荐

  1. JAVA中的时区设置

    JAVA中的时区设置 第一种方式.通过代码指定.   final TimeZone timeZone = TimeZone.getTimeZone("GTM+8");   Time ...

  2. MessageConsumer

    @Slf4j @Component public class MessageConsumer { @Autowired private PpcRequestMessageListener ppcReq ...

  3. 【转载】Spring Cloud Gateway排错、调试技巧总结

    http://www.imooc.com/article/290824 本文总结Spring Cloud Gateway的排错.调试技巧.欢迎留言补充! 第一式:Actuator监控端点 借助Actu ...

  4. 记一次单元测试问题com.sun.crypto.provider.HmacSHA1 cannot be cast to javax.crypto.MacSpi

    在用单元测试Junit测试部门的SDK时,有个md5鉴权步骤,出现了java.lang.ClassCastException: com.sun.crypto.provider.HmacSHA1 can ...

  5. Qt音视频开发46-视频传输UDP版

    一.前言 上篇文章写道采用的TCP传输视频,优缺点很明显,优点就是不丢包,缺点就是速度慢,后面换成UDP通信,速度快了很多,少了3次握手,而且在局域网中基本上不丢包,就算偶尔丢包,对于一秒钟25-30 ...

  6. 混合云网络过于复杂?ENS给你全局一张网的极致体验

    本文分享自华为云社区<[华为云Stack][大架光临]第19期:混合云网络过于复杂?ENS给你全局一张网的极致体验>,作者:华为云Stack ENS研发团队. 政企IT的混合形态 经过几十 ...

  7. 使用Halcon软件和圆形标定板进行相机标定的步骤和教程

    直接给出使用Halcon软件和圆形标定板进行相机标定的教学视频链接: 55-相机标定4-DLT,张正友标定法,Halcon标定算子

  8. Vue3项目运行时报错误:TypeError:router.addRouters is not a function

    router.addRouters()方法报错:Uncaught (in promise) TypeError: router.default.addRouters is not a function ...

  9. 【量化读书笔记】【打开量化投资的黑箱】CH.04.风险模型

    风险管理不仅仅是规避风险和减少损失,是通过对敞口实施有目的的选择和规模控制来提高收益的质量和稳定性. (注:敞口,一般指金融活动中存在金融风险的部位以及受金融风险影响的程度) 本质上风险模型是为阿尔法 ...

  10. biancheng-Python机器学习算法

    http://c.biancheng.net/ml_alg/ Python机器学习 就当下而言,Python 无疑是机器学习领域最火的编程语言,这得益于 Python 对科学计算的强大支持.因此,本套 ...