首页 > 其他 > 详细

XCTF level2 pwn之ROP初体验(爬

时间:2021-01-17 19:34:55      阅读:28      评论:0      收藏:0      [点我收藏+]

XCTF level2 pwn之ROP初体验(爬

结合题目,容易知道需要采用ROP方法。

给和我一样小白的餐前点心

ROP&NX?

ROP的全称为Return-oriented programming(返回导向编程),可以用来绕过现代操作系统的各种通用防御(比如内存不可执行和代码签名等)。ROP的核心思想就是利用以ret结尾的指令序列把栈中的应该返回EIP的地址更改成我们需要的值,从而控制程序的执行流程。

NX(DEP)的基本原理是将数据所在内存页标识为不可执行,当程序溢出成功转入shellcode时,程序会尝试在数据页面上执行指令,此时CPU就会抛出异常,而不是去执行恶意指令。随着 NX 保护的开启,以往直接向栈或者堆上直接注入代码的方式难以继续发挥效果。所以就有了各种绕过办法,rop就是一种

以上摘自蚁景科技文章

调用函数的时候栈上面发生了什么

动态图解汇编中的函数调用中栈的工作过程

希望有助于你理解在构造脚本中填充p32(0xdeedbeef)的作用

 

解题过程:

首先检查文件:32bit-ELF,未开启canary,开启了NX。

拖入IDA,找出主函数,F5。进入自定义函数“vulnerable_function”。

只有一个输入语句,BUF只有0x88,可输入长度为0x100,存在溢出,在这里构造ROP。

F12,看看有没有可用的漏洞函数。

技术分享图片

定睛一看,老熟人了,构造system("/bin/sh")的伪栈帧。

写好脚本,K.O.

脚本

Attention: 这里提供了py3的脚本,py3的User参看注释修改脚本即可

这里的worning是指py3会遇见的问题。

技术分享图片

XCTF level2 pwn之ROP初体验(爬

原文:https://www.cnblogs.com/BlankSpace/p/14289387.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!