一款通过寻找和串联Gadget来构建ROP漏洞利用的工具

本日给大年夜家先容的是一款名叫ROPGenerator的ROP破绽使用开拓对象,它能够自动探求gadget,并构建ROP破绽使用链,该对象当前版本支持x86和x64源码。

对象先容

ROPGenerator应用了ROPgadget对象来从二进制代码中提掏出可使用的gadget,并使用barf-project来对它们进行反汇编。提掏出gadget之后,它将会对这些gadget进行阐发,并解析代码语义,着末根据它们的实用性来存储gadget信息。阐发完成之后,测试职员就可以使用ROPGenerator来自动化查询gadget,并经由过程语义查询来构建相关的ROP破绽使用链。

ROPGenerator采纳Python开拓,该对象今朝只支持Python 2情况。

注:ROPGenerator今朝仍处于测试阶段,当前主分支版本为v0.5,今朝我正在开拓v1.0版本,这个版本的速率会更快,功能也会更强,大年夜概几周之后就可以宣布。

ROPGenerator的上风

1.优秀的敕令行接口:对象供给了一个流通且易于应用的敕令行接口;

2.基于语义的gadget查询:你可以经由过程指定语义来快速查询相关的gadget;

3.Gadget链构建引擎:单个gadget无法满意你的需求?不要紧,ROPGenerator可以帮你构建ROP使用链;

4.完全自动化实现:ROPGenerator能够帮你自动化构建出完备的破绽使用链。

对象安装

安装ROPGenerator

你可以应用下列敕令下载安装并运行ROPGenerator:

$ python setup.py install

$ ROPGenerator

安装依附

ROPGenerator的运行必要ROPgadget、prompt_toolkit、enum、python-magic、pwntools和barf v0.4.0:

1.prompt_toolkit、enum、python-magic和barf v0.4.0会在对象安装历程中自动完成添加;

2.假如你没有安装ROPgadget的话,它同样会在对象安装历程中自动安装,然则该对象当前托管在pypi上的版本并不是最新版,以是你必要手动进行更新。

对象应用

ROPGenerator的应用异常简单,下面给出一些参考实例。

加载源码

第一步便是从你想要使用的源码中加载gedget,你可以应用“load”敕令实现:

>>>load /your/binary/goes/here

这条敕令将运行ROPgadget来从代码中提取gadget,接下来对象会对所有提掏出来的gadget进行阐发,并谋略语义,然后将阐发结果存储在一个gadget数据库中。

语义查询

你可以应用“find”敕令查询gadget和ROP使用链,你必要指定一个想要完成的操作,随后ROPGenerator将天生响应的ROP使用链,支持的表达式如下:

reg =reg +/- cst

reg =mem(reg +/- cst)

mem(reg +/- cst ) = reg +/- cst

样例:

>>>find rax=rbx

>>>find mem(rax+0x18)=rbx

>>>find rbx = mem(rsp+8)

假如你不确定哪一个寄存器可用,你可以应用“registers”敕令来进行查询。假如你想进行有针对性的查询,你还可以应用“find”敕令供给的其他选项:

-b,–bad-bytes:指定gadget地址中禁止的字节数据;

-k,–keep-regs: 指定天生的ROP使用链不应改动的寄存器列表;

-f,–output-format: 指定ROP链的输出款式;

样例:

>>>find –bad-bytes 0F,0A,56rcx=rdx

>>>find –keep-regs rax,rbxmem(rax)=rdx

>>>find –output-format pythonrax=mem(rsp)

构建破绽使用代码

加载代码之后,你可以应用“exploit”敕令来自动化构建破绽使用代码,ROPGenerator供给了多种破绽使用措施:

1.run-payload:向可履行内存区域发送Payload,并跳转履行;

2.call:经由过程中断或系统调用来调用系统函数;

3.更多功能敬请等候!

可用的破绽使用调试选项如下:

-v,–verbose:打印ROPGenerator在构建破绽使用代码历程中的相关信息;

-f,–output-format: 指定破绽使用的输出款式;

样例:

>>>exploit –verbose –output-format python run-payload

注:ROPGenerator供给了一个嵌入式Payload数据库,你也可以直接应用“payload”敕令来治理和调用此中的Payload。

“run-payload”措施

“run-payload”策略会考试测验经由过程调用mprotect来制作.bss RWX,然后将payload拷贝进响应的内存区域,并跳转履行payload。你经由过程应用下列敕令来应用“run-payload”策略:

>>>payload select(select a payloadto execute)

>>>exploit run-payload(build exploit withrun-payload strategy)

“call”措施

正在开拓中,敬请等候:D

运行截图

启动ROPGenerator:

获取赞助信息:

从源码文件加载gadget:

快速查询gadget:

[1] [2]下一页

自动化天生破绽使用代码:

上一页[1] [2]

赞(0) 打赏
分享到: 更多 (0)
免责申明:本站所有资料均来自于网络,版权归原创者所有!本站不提供任何保证,不保证真实性,并不承担任何法律责任

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

阿里云优惠网 更专业 更优惠

阿里云优惠券阿里云大礼包