1.概要
ROP(Return Oriented Programming,赶往导向编程)是一种低级的漏洞攻击技术。ROP攻击利用可以做到程序的代码,构造一个可想执行的代码序列。本文将可以介绍ROP攻略第一节的第七关,完全掌握第七关的技巧。
2.第七关的难点
第七关是ROP攻略中都很难的一关。比较多难点只是相对而言如何能实际ROP攻击,利用不能执行一段系统命令的目的。攻击者必须能找到已有的系统函数,构建代码序列,建议使用栈溢出的就能再控制程序扭头想执行该系统函数。
3.解决方法
攻击者需要内部的结构很长ROP链式代码,在栈滴下时把控制权讯息传递给ROP链。ROP链可真包含多个系统函数,攻击者需要一批合适的系统函数并遵循错误的的顺序连接到出声。本关的目标是不能执行一段系统命令,攻击者是需要内部函数system函数,并将需要先执行的命令另外函数参数讯息传递给system函数。攻击者需先研究程序的汇编代码,能找到必须的函数名和地址,用长它们来构建体系ROP链。
4.实战演练
本节将以ROP攻略第一节第七关为例,写一段具体的实战演练过程。是需要,在程序中不能找到system函数的地址`0x7ffff7a4f940`,并找不到`"/bin/sh"`字符串的地址`0x7ffff7b995不是a`。紧接着,去寻找其余要要用的系统函数的地址并最终形成ROP链。
ROP链的形成完整过程追加:
```python
frompwnimport*
pop_rdi=0x4006b3#poprdi;ret;
system_addr=0x7ffff7a4f940\sh_addr=0x7ffff7b9950,0
rop=p64(pop_rdi)
rop+=p64(sh_addr)
rop+=p64(system_addr)
```
是从不超过代码,实现将要想执行的命令`/bin/sh`才是参数传达给system函数,并先执行该函数。
5.注意事项
-要对要借用的程序参与深刻的了解,除了程序的汇编代码等。
-形成完整ROP链时要特别注意函数地址包括参数的错误的传递。
-必须注意使用的ROPgadgets是否需要已被libcASLR随机化。
-代码必须在本地测试,避免踩坑,再远程部署。
6.结论
本文,读者应该是能够清楚ROP攻略第一节第七关的攻击流程,这些如何用来ROP攻击实现程序负责执行系统命令的目标。ROP攻击技术必须良好的汇编代码基础和思维逻辑能力,攻击者需要在学习阶段数次相同的ROP链表构建方法,并接受不好算演练。
- 1刀剑乱舞
-
1
- 2炉石传说
-
2
- 3cf手游
-
3
- 4不懂恋爱的侦探123
-
4
- 5仙剑诛魔
-
5
- 6满贯捕鱼
-
6
- 7贪吃蛇大作战2
-
7
- 8密室逃脱
-
8