glibc-all-in-one+patchelf修改程序libc

news2024/9/24 7:24:36

主要是做堆的时候经常遇到libc小版本不对导致libcbase不对打不通的情况,再者,每个题换一个ubuntu虚拟机属实麻烦,所以还是回到最初也是最好用的做法:patch libc。

核心就是两个工具:glibc-all-in-one和patchlef。但是自己弄的时候遇到了很多坑,所以记录一下。

glibc-all-in-one

下载:

sudo git clone https://github.com/matrix1001/glibc-all-in-one.git
cd glibc-all-in-one/

安装:

sudo python3 update_list
[+] Common list has been save to "list"
[+] Old-release list has been save to "old_list"

glibc-all-in-one里面libc的版本比较全。
而且glibc-all-in-one下载的配套还有ld.so,方便我们一起patch。

遇到的问题:

高版本的libc ./download 的时候遇到
tar (child): zstd: Cannot exec: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
tar failed

下载zstd解压工具即可
sudo apt-get install zstd

glibc-all-in-one使用:

cat list // 查看有哪些libc版本
sudo ./download xxxx // 下载xxxx版本的Libc

image

patchelf

关于patchelf也有个坑点!
不要用apt下载!!!
应该用这种

wget https://github.com/NixOS/patchelf/releases/download/0.14.5/patchelf-0.14.5-x86_64.tar.gz
tar -xzvf patchelf-0.14.5-x86_64.tar.gz
cd bin
sudo mv patchelf /bin/patchelf

不然patchelf不对!!!

修改libc

下载好对应版本的libc和ld后,patchelf的话两个都要设置
即ld.so和libc.so
这里有个坑点!
网上大多数都说的用set-rpath,事实上应该–replace-needed更换libc.so.6的指向!

patchelf --set-interpreter ./xxx/ld-xxx.so.2 ./pwn
patchelf --replace-needed libc.so.6 ./xxx/libc-xxx.so ./pwn

示例
image
所以现在可以很方便的用一个ubuntu做pwn了。
比如我这里ubuntu20.04,patch后也能打fastbin了。
在这里插入图片描述

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

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

相关文章

buuctf-web

查看后端源码 得到base64编码,解码得flag

pc端注册页面 密码校验规则

1.密码校验规则 格应包含大小写字母、数字和特殊符号,长度为8-20 var validateRetrievePassword (rule, value, callback) > {let reg /^(?.*[A-Za-z])(?.*\d)(?.*[~!#$%^&*()_<>?:"{},.\/\\;[\]])[A-Za-z\d~!#$%^&*()_<>?:"{},.\/\\;…

WSL-Ubuntu20.04训练环境配置

1.YOLOv8训练环境配置 训练环境配置的话就仍然以YOLOv8为例&#xff0c;来说明如何配置深度学习训练环境。这部分内容比较简单&#xff0c;主要是安装miniAnaconda以及安装torch和torchvision. 首先是miniAnaconda的安装(参考官网的教程Miniconda — Anaconda )&#xff0c;执行…

开发笔记 | 快速上手[法大大]电子合同SDK使用SpringBoot+JAVA

Springbootmavenjava 官方API文档 API - 法大大电子合同和电子签云平台 官方SDK下载 API - 法大大电子合同和电子签云平台 目录 目录 开发前准备 项目整合 功能1&#xff1a;查询文档模板列表 功能2&#xff1a;文档模板字段填充 开发前准备 1.点下方链接注册法大大测试环…

昇思25天学习打卡营第12天|munger85

基于MindSpore通过GPT实现情感分类 这个实现情感分类意思就是通过一些电影的数据最后知道他对于这个电影的评价&#xff0c;最后知道他对于这个电影的评价到底是好还是不好&#xff0c;零就是不好&#xff0c;一就是好。首先我们肯定是按安装这些依赖包了为了今天这个模型我们…

Postman、Apifox、Apipost用哪个?

Postman、Apifox、Apipost都是流行的API接口管理工具&#xff0c;它们各自具有不同的特点和优势&#xff0c;因此哪个更好用取决于具体的使用场景和需求。以下是对这三个工具的比较分析&#xff1a; 一、Postman 特点与优势&#xff1a; 支持多种请求方式&#xff1a;包括GE…

游戏分组(DFS)

游戏分组&#xff08;DFS&#xff09; 将10名参赛者根据其游戏水平评分分为实力尽量相近的两队。 深度优先搜索&#xff08;DFS&#xff09;是游戏分组中常用的一种算法思路。 DFS在解决特定类型的分组问题时&#xff0c;特别是需要遍历所有可能组合的情况&#xff0c;表现出了…

一文详解:医疗营销升级的智能解决方案

顺境是所有人的狂欢&#xff0c;逆境才是优秀者的天堂。淘金的时代过去了&#xff0c;未来是冶金的时代。 01、享受完改革开放40年的高速区间红利 企业正处于中速区间的全面竞争期 1978年&#xff0c;中国的GDP是3679亿。改革开放40多年&#xff0c;我们不断引进资本&#xf…

【嵌入式Linux】<总览> 网络编程(更新中)

文章目录 前言 一、网络知识概述 1. 网路结构分层 2. socket 3. IP地址 4. 端口号 5. 字节序 二、网络编程常用API 1. socket函数 2. bind函数 3. listen函数 4. accept函数 5. connect函数 6. read和recv函数 7. write和send函数 三、TCP编程 1. TCP介绍 2.…

Monaco 使用 DocumentFormattingEditProvider

文档格式化&#xff0c;是 VSCode 比较常用的功能&#xff0c;在文档上点击右键选择格式化文档。效果如下&#xff1a; 在 Monaco 通过 registerDocumentFormattingEditProvider 方法注册处理函数&#xff0c;实现 provider 方法。 provider 方法返回格式化好的代码。 TextE…

Android C++系列:Linux文件系统(二)

1. VFS虚拟文件系统 Linux支持各种各样的文件系统格式&#xff0c;如ext2、ext3、reiserfs、FAT、NTFS、iso9660 等等&#xff0c;不同的磁盘分区、光盘或其它存储设备都有不同的文件系统格式&#xff0c;然而这些文件系统 都可以mount到某个目录下&#xff0c;使我们看到一个…

Kafka(四) Consumer消费者

一&#xff0c;基础知识 1&#xff0c;消费者与消费组 每个消费者都有对应的消费组&#xff0c;不同消费组之间互不影响。 Partition的消息只能被一个消费组中的一个消费者所消费&#xff0c; 但Partition也可能被再平衡分配给新的消费者。 一个Topic的不同Partition会根据分配…

【C#】部分国家/语言,string字符串转decimal、float时,小数点解析异常、小数点丢失、小数点被忽略

现象&#xff1a; 部分国家地区&#xff0c;字符串转小数后&#xff0c;小数点丢失&#xff0c;比如&#xff1a;输入"12.34"&#xff0c;输出1234&#xff0c;而非12.34。 部分相关函数decimal.Parse、decimal.TryParse、float.Parse、float.TryParse 原因&…

【Linux】常用命令总结(updating)

1.date2.du&#xff08;disk use&#xff09;3.df&#xff08;disk free&#xff09;4.find5.crontab6.netstat shell命令可以使用man查看命令文档说明&#xff0c;说明界面中可通过b(backward)向上翻页&#xff0c;f(forward)向下翻页&#xff0c;g(go to)跳到说明首页&#x…

【问题记录】Docker配置mongodb副本集实现数据流实时获取

配置mongodb副本集实现数据流实时获取 前言操作步骤1. docker拉取mongodb镜像2. 连接mongo1镜像的mongosh3. 在mongosh中初始化副本集 注意点 前言 由于想用nodejs实现实时获取Mongodb数据流&#xff0c;但是报错显示需要有副本集的mongodb才能实现实时获取信息流&#xff0c;…

springboot老年慢性病药物管理系统-计算机毕业设计源码70568

目录 摘要 Abstract 第一章 绪论 1.1 选题背景及意义 1.2 国内外研究现状 1.3 研究方法 第二章 相关技术介绍 2.1 MySQL简介 2.2 Java编程语言 2.3 B/S模式 2.4 springboot框架 第三章 老年慢性病药物管理系统 系统分析 3.1 系统目标 3.2 系统可行性分析 3.2.1 技…

【linux】服务器ubuntu安装cuda11.0、cuDNN教程,简单易懂,包教包会

【linux】服务器ubuntu安装cuda11.0、cuDNN教程&#xff0c;简单易懂&#xff0c;包教包会 【创作不易&#xff0c;求点赞关注收藏】 文章目录 【linux】服务器ubuntu安装cuda11.0、cuDNN教程&#xff0c;简单易懂&#xff0c;包教包会一、版本情况介绍二、安装cuda1、到官网…

Java面试八股之Redis哨兵机制

Redis哨兵机制 Redis Sentinel&#xff08;哨兵&#xff09;模式是一种高可用解决方案&#xff0c;用于监控和自动故障转移Redis主从集群。以下是对哨兵模式详细过程的描述&#xff1a; 1. 初始化与配置 部署哨兵节点&#xff1a;在不同的服务器上部署一个或多个Redis Sentin…

链表题目专题

19. 删除链表的倒数第 N 个结点 给定一个链表&#xff0c;删除链表的倒数第 n 个节点&#xff0c;并且返回链表的头结点。 非递归解决 这题让删除链表的倒数第n个节点&#xff0c;首先最容易想到的就是先求出链表的长度length&#xff0c;然后就可以找到要删除链表的前一个结…

Hyper-v创建二代虚拟机无法进入bios问题解决

首先要确定从dvd驱动在上面&#xff0c;如果不在则把它向上移动然后保存。 启动虚拟机会进入下面界面 然后点下最左边的按钮然后疯狂点击f2(有的电脑是fnf2) 就可以顺利进入bios引导界面。