ROPR:一款功能强大的极速多线程ROPGadget查找工具

news2024/11/25 0:27:23

关于ROPR

ROPR是一款速度极快且功能强大的ROPGadget查找工具,该工具支持多线程运行,可以帮助广大研究人员快速寻找和定位目标ROPGadget。

ROP(Return Oriented
Programming),即返回导向编程,而ROPGadget是一些包含汇编指令的代码段,通常以ret指令结尾,这些指令已经作为可执行代码存在于每个源码文件或代码库中,而这些小工具可用于二进制攻击,并破坏易受攻击的可执行文件。

当许多ROPGadget的地址写入缓冲区时,就形成了ROP链。如果攻击者可以将堆栈指针移动到此ROP链中,则控制权将会完全转移给攻击者。

大多数可执行文件包含足够的小工具来编写ROP链一旦我们知道了地址,就可以使用包含在同一地址空间(如libc)中的动态库。

而使用ROPGadget的好处在于,无需在任何地方编写新的可执行代码,攻击者可以仅使用程序中已经存在的代码来实现其目标。

工具要求

工具需要使用cargo(Rust构建系统)来构建和使用ROPR。

工具下载

源码安装

广大研究人员可以使用下列命令将该项目源码克隆至本地,并构建项目代码:

git clone https://github.com/Ben-Lichtman/ropr

cd ropr

cargo build --release

此时,应用程序将会安装到target/release/ropr路径下。

或者,下列命令同样可以安装ROPR:

git clone https://github.com/Ben-Lichtman/ropr

cd ropr

cargo install --path .

此时,应用程序将会安装到~/.cargo/bin路径下。

Cargo安装

cargo install ropr

此时,应用程序将会安装到~/.cargo/bin路径下。

工具使用

USAGE:

    ropr [OPTIONS] <BINARY>

 

ARGS:

    <BINARY>    待检查的文件路径

 

OPTIONS:

    -b, --base-pivot               用于更改基指针的ROPGadget过滤器

    -c, --colour <COLOUR>       开启输出颜色高亮和明文显示

    -h, --help                     打印工具帮助信息

    -j, --nojop                    移除"JOP Gadgets"

    -m, --max-instr <MAX_INSTR>    一个小工具中的最大指令数量[默认: 6]

    -n, --noisy                    包含潜在的低质量小工具

    -p, --stack-pivot               过滤堆栈指针后的小工具

    -r, --norop                    移除普通的"ROP Gadgets"

    -R, --regex <REGEX>          执行正则表达式搜索

        --range <RANGE>         搜索地址范围(十六进制),例如 `0x1234-0x4567`

        --raw <RAW>             将输入文件当作代码段

    -s, --nosys                    移除系统调用和其他中断

    -V, --version                  打印工具版本信息

工具使用演示

比如说,如果我们想要使用其他注册表键值来填充rax,我们就可以使用正则表达式“^mov eax, …;”来选择过滤器:

❯ ropr /usr/lib/libc.so.6 -R "^mov eax, ...;" > /dev/null

 

==> Found 197 gadgets in 0.118 seconds

现在,我们就可以在命令行添加某些过滤器来获取高质量的处理结果了:

❯ ropr /usr/lib/libc.so.6 -m 2 -j -s -R "^mov eax, ...;"

0x000353e7: mov eax, eax; ret;

0x000788c8: mov eax, ecx; ret;

0x00052252: mov eax, edi; ret;

0x0003ae43: mov eax, edx; ret;

0x000353e6: mov eax, r8d; ret;

0x000788c7: mov eax, r9d; ret;

 

==> Found 6 gadgets in 0.046 seconds

接下来,我们可以查看到mov小工具的地址为0x00052252。

网络安全工程师企业级学习路线

这时候你当然需要一份系统性的学习路线

如图片过大被平台压缩导致看不清的话,可以在文末下载(无偿的),大家也可以一起学习交流一下。

一些我收集的网络安全自学入门书籍

一些我白嫖到的不错的视频教程:

上述资料【扫下方二维码】就可以领取了,无偿分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/336878.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法训练营DAY52|1143.最长公共子序列、1035.不相交的线、53. 最大子序和

前两道题思路是一模一样的&#xff0c;但是需要认真理解&#xff0c;最后一道虽然思路不算难&#xff0c;但是需要注意的细节一点不少。 1143. 最长公共子序列 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/longest-common-subsequence/最长公共子序列…

2-ChatGPT插件到Google浏览器、Firefox浏览器,并进行ChatGPT工作。

ChatGPT插件到Google浏览器、Firefox浏览器&#xff0c;并进行ChatGPT工作。1&#xff0c;首先&#xff0c;在装插件ChatGPT forGoogle插件时&#xff0c;我没安装成功&#xff0c;问题是我没有区分Google浏览器和双核浏览器的差别。2&#xff0c;如何使用ChatGPT在浏览器上进行…

基于北方苍鹰算法优化LSTM(NGO-LSTM)研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

2023软件测试面试全方位话术,你想要的全都有

目录 2023软件测试面试话术包含&#xff1a;自我介绍简历人资题话术面试题项目介绍 自我介绍 软件测试基础面试题 人资高频率问题 简历 总结 2023软件测试面试话术包含&#xff1a;自我介绍简历人资题话术面试题项目介绍 目录如下 自我介绍 软件测试基础面试题 需求的标准…

参数嗅探 - 为何产生

这个问题会在参数话的SQL语句&#xff08;例如存储过程&#xff09;与SQL Server里的计划缓存机制结合的时候会出现。这个文章分为2个部分&#xff0c;第1部分会介绍下参数嗅探&#xff08;Parameter Sniffing&#xff09;的概况&#xff0c;第2部分我们介绍下如何解决这个问题…

git整体工作流程

文章目录本地流程远程仓库流程git 代码量统计本地流程 工作区 暂存区 本地仓库 远程仓库流程 git 代码量统计 # 统计本地仓库的代码量 git log --all --since2022-01-01 --until2022-01-05 --format"%aN" --no-merges | sort | uniq -c | while read data; do na…

浅析 SeaweedFS 与 JuiceFS 架构异同

SeaweedFS 是一款高效的分布式文件存储系统&#xff0c;最早的设计原型参考了 Facebook 的 Haystack&#xff0c;具有快速读写小数据块的能力。本文将通过对比 SeaweedFS 与 JuiceFS 在设计与功能上的差异&#xff0c;以帮助读者进行更适合自己的选择。 SeaweedFS 系统结构 S…

【树】平衡二叉搜索树的介绍与构建

二叉平衡搜索树一、平衡二叉搜索树的概述1. 平衡二叉树的性质2. 平衡二叉树的最小节点数&#xff08;公式及其原理&#xff09;a. 树高度和深度的区别b. 原理二、平衡二叉树的创建和调整1. 节点2. 旋转四种姿态a. LL旋转b. RR旋转c. LR旋转d. RL旋转2. 节点的插入3. 节点的删除…

[转]深度学习 Transformer架构解析

原文链接&#xff1a;https://blog.csdn.net/mengxianglong123/article/details/1262614791.1 Transformer的诞生2018年10月&#xff0c;Google发出一篇论文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》, BERT模型横空出世, 并横扫N…

分享5款后台收到的推荐最多的软件

最近后台收到好多小伙伴的私信&#xff0c;今天继续推荐五款小工具&#xff0c;都是免费使用的&#xff0c;大家可以去试试看。 1.视频压缩——Moo0 VideoMinimizer 一款完全免费的视频压缩软件&#xff0c;能够有效的将视频压缩到最小&#xff0c;同时还不改变视频画质很清晰…

基于SpringBoot的房屋租赁管理系统的设计与实现

基于SpringBoot的房屋租赁管理系统的设计与实现 1 绪论 1.1 课题来源 随着社会的不断发展以及大家生活水平的提高&#xff0c;越来越多的年轻人选择在大城市发展。在大城市发展就意味着要在外面有一处安身的地方。在租房的过程中&#xff0c;大家也面临着各种各样的问题&…

Java程序设计-基于Java高校社团管理系统

摘 要功能需求系统的功能实现摘 要 当前&#xff0c;大多数高校的社团信息管理都是采用纸质档案的方式来管理的&#xff0c;这样不仅不能长期的保存信息&#xff0c;而且在数据的查找上带来很大的不方便。在目前的网络技术和计算机技术的普及和信息管理的迅速发展&#xff0c;…

【MySQL】你知道的MySQL中的集合函数有哪些呢?

集合函数排名AVG&#xff08;&#xff09;函数COUNT()函数SUM&#xff08;&#xff09;函数MAX&#xff08;&#xff09;函数 和 MIN&#xff08;&#xff09;函数总结大家好&#xff0c;我是小冷。 上一篇写了 看看ChatGPT是如何回答面试官的问题的&#xff1f; 地址是&#x…

MySQL数据库06——条件查询(WHERE)

MySQL条件查询&#xff0c;主要是对数据库里面的数据按照一定条件进行筛选&#xff0c;主要依靠的是WHERE语句进行。 先来了解一下基础的条件运算。 关系运算符 逻辑运算符 逻辑运算符优先级&#xff1a;NOT>AND>OR&#xff0c;关系运算符>逻辑运算符 SQL特殊运算符…

公司常用的Project管理工具

目录 1.svn 2.reviewBoard 3.禅道 4.瘦终端 1.svn svn主要是对代码的管理&#xff0c;保证代码的同步开发。 svn的搭建方法https://www.cnblogs.com/ftx3q/p/15340160.html 2.reviewBoard reviewBoard代码审查工具&#xff0c;所有工程师写的代码上传到reviewBoard&#x…

前端将本地代码项目上传到gitee上

文章目录前言一、gitee建立仓库&#xff1f;1.登入并新建账号2.填写仓库信息3.传项目前言 因为以前跟B站做了一些项目&#xff0c;想上传到gitee仓库保留。所以写下此文章。前端项目 一、gitee建立仓库&#xff1f; 1.登入并新建账号 2.填写仓库信息 readme文件是否选择&#…

C++类基础(十)

运算符重载 struct Str {int val 3; }; Str Add(Str x, Str y) {Str z;z.val x.val y.val;return z; } int main() {int val1 2;int val2 3;int val3 val1 val2; //分别对val1和val2求值然后相加Str x;Str y;Str z Add(x, y); //同样的功能&#xff0c;但是写法冗杂St…

【GPLT 二阶题目集】L2-004 这是二叉搜索树吗?

参考文章&#xff1a;L2-004. 这是二叉搜索树吗&#xff1f;-PAT团体程序设计天梯赛GPLT 作者&#xff1a;柳婼&#xff08;非常感谢!!!&#xff09; 一棵二叉搜索树可被递归地定义为具有下列性质的二叉树&#xff1a;对于任一结点&#xff0c; 其左子树中所有结点的键值小于…

基于时间序列的 基-2 FFT算法程序

gitee链接 &#xff1a;基于时间序列的 基-2 FFT算法程序 我的 gitee 程序目前没有公开&#xff0c;目前仅是给自己的程序做一个备份的目的。 但是大家可以使用我博客贴出来的程序&#xff0c;二者是一样的。 文章目录1.程序使用方法2.代码3.验证1.程序使用方法 1.先补零至2的…

html(二)基础标签

一 HTML中的注释 重点&#xff1a; 在哪写注释? 注释的形式? vs code和webstorm都可以通过 ctrl / 进行单行注释和取消注释 ① html中注释的形式 1) html文档中单行和多行注释是"<!-- -->" -->html2) 在html文档中,script标签…