PWN ret2text

今天跟着B站UP学习了ROP,向UP表示感谢。


 

0X01 什么是ROP

        ROP就是shellcode的一种特殊写法。ROP技术就是不需要自己动手写shellcode,只是利用文件中给出的多个跳转指令,实现利用原有代码达到获取shell的目的。

0X02 ROP使用的地方

        1、当程序开启了NX保护机制;NX策略是使栈区域的代码无法执行,但我们可以使用ROP绕过。

        2、开启NX意味着栈中的代码无法执行,JMP ESP 方法无效。

0X03 ROP原理

        用程序中的可执行指令,组合成shellcode。

0X04 用ret2text来理解ROP

        1、先使用file、checksec来查看信息

PWN ret2text_第1张图片

 

PWN ret2text_第2张图片

PWN ret2text_第3张图片

2、运行程序,看程序功能

PWN ret2text_第4张图片

3、拽到IDA中,F5大法,gets()函数,存在溢出

PWN ret2text_第5张图片

4、确定栈溢出覆盖返回地址的位置,可以手动计算,这里使用cyclic;

     cyclic pattern是一个很好用的功能,pattern就是指一个字符串。在完成溢出题目时,使用cyclic pattern可以大大减少计算溢出点的时间。

PWN ret2text_第6张图片

PWN ret2text_第7张图片

5、在程序中找出可利用的块指令地址

      IDA,shift+F12,查看Strings

PWN ret2text_第8张图片

PWN ret2text_第9张图片

     

        在上图中发现,DATA XREF,数据交叉引用,数据交叉引用用于跟踪二进制文件访问数据的方式。我们查看secure这个函数。

 

PWN ret2text_第10张图片

        记录左侧地址,0X0804863A,

6、编写EXP(漏洞利用代码)

from pwn import *
p=process('./ret2text')
p.sendline('b'*112+p32(0X0804863A))
p.interactive()

PWN ret2text_第11张图片

 

 


这个实验就做到这里,当然其中的细节还需要再总结提炼,加油。

: )

 

你可能感兴趣的:(PWN,PWN)