运行不同版本libc

article/2025/10/14 12:34:44

author: Tamako

先上两个美化的链接,不用zsh的

字体

样式,颜色

成品

切换libc

我的工具机是Ubuntu 18.04。

获取libc版本

这个很容易,通过运行libc就可以直接获取,比如buu的Ubuntu16.04 32位机使用的libc

img

当然有些libc运行的时候会出现错误,这个时候放到ida里面反编译一下就可以了,效果是一样的。

img

实际上用 strings 指令也可以 strings libc.so.6 | grep "ubuntu",简单快捷

编译libc

准备工作

考虑到现在见到的都是2.23版本的libc,所有就只编译了这个版本

为了编译旧版本的libc,最好用旧版本的gcc,所以我们考虑安装一下,好消息是不同版本的gcc是可以共存的。

首先添加旧版本的镜像源。使用 sudo vim /etc/apt/sources.list添加

deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb http://mirrors.aliyun.com/ubuntu/ xenial universe

然后 sudo apt-get update更新源。

安装旧版本的gcc

sudo apt-get install gcc-4.8
sudo apt-get install gcc-4.8-multilib
sudo apt-get install g++-4.8
sudo apt-get install g++-4.8-multilib
sudo apt-get install gcc-5
sudo apt-get install gcc-5-multilib
sudo apt-get install g++-5
sudo apt-get install g++-5-multilib

添加到维护程序版本的 update-alternatives

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50 --slave /usr/bin/g++ g++ /usr/bin/g++-5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70 --slave /usr/bin/g++ g++ /usr/bin/g++-7

通过 sudo update-alternatives --config gcc就可以切换版本了

编译2.23版本的libc时我们选择gcc-4.8

安装glibc-all-in-one

编译各个版本libc

git clone https://github.com/matrix1001/glibc-all-in-onecd glibc-all-in-onechmod 777 build download extractsudo ./build 2.29 amd64     #编译glibc
sudo ./build 2.27 amd64

没有编译32位的版本,考虑到32位用的少

位置在2.27和2.29的ld和libc在/glibc/2.2?/amd64中

但是2.23考虑了32位版本,采用手动编译

tar -zxvf glibc-2.23.tar.gz
cd glibc-2.23

建立目录并完成设置

64位
mkdir build64
cd build64
sudo CFLAGS="-g -g3 -ggdb -gdwarf-4 -Og -Wno-error" CXXFLAGS="-g -g3 -ggdb -gdwarf-4 -Og -Wno-error" ../configure --prefix=path_to_install
sudo make
sudo make install
32位
mkdir build32
cd build32
sudo CC="gcc -m32" CXX="g++ -m32" CFLAGS="-g -g3 -ggdb -gdwarf-4 -Og -Wno-error" CXXFLAGS="-g -g3 -ggdb -gdwarf-4 -Og" ../configure --prefix=/glibc/2.23/32 --host=i686-linux-gnu
sudo make
sudo make install

编译的时候报错了,解决方法如下

解决办法就是在这2个变量后面加 __attribute__ ((nocommon))。他们在/glibc-2.23/misc/regexp.c中(第33行开始的)。

然后还是报错,发现还有这个。

也要改,三个都在一起,恒容易找到

记住改掉之后,重新make

这里我考虑使用patchelf

可以使用apt-get安装

sudo apt-get install patchelf

然后

patchelf --set-interpreter ./ld-linux.so.2 ./elfnamepatchelf --replace-needed libc.so.6 ./libc-2.23.so ./elfname或者patchelf --set-interpreter ./glibc-all-in-one-master/libs/2.31-0ubuntu9.2_amd64/ld-2.31.so --set-rpath ./glibc-all-in-one-master/libs/2.31-0ubuntu9.2_amd64 target_file

看这里

都试了一下,最好使的还是repath

patchelf --set-repath xxxxxxx pwn

xxxx是路径文件夹的路径,不过有个缺点就是只能放一个libc和ld。

patchelf --set-rpath ~/Desktop/vnctf2021/ff/ ff例子。

这样的指令就可以设置了。第一条替换了ld,第二条替换了libc。第二条中的 libc.so.6 是目标文件 libc 软连接的名字,需要通过 ldd 指令来查看(一般都就是 libc.so.6

libc编译遇到的错误

pwn本地加载libc

但是32位安装报错一直没有解决,两个多小时遂放弃。


http://chatgpt.dhexx.cn/article/7VXw4yJA.shtml

相关文章

ret2libc实战

title: ret2libc实战 date: 2021-05-13 22:00:00 tags: binary securitystudy reportret2libc comments: true categories:ctfpwn ret2libc是一个pwner必备的基础知识。 ret2libc为return to libc的缩写,我们需要执行libc函数里面的system("/bin/sh") …

WSL vhdx非root误删除libc.so.6

思路 由于不在root这种情况的特殊性,没有办法使用网上例如LDPRELOAD进行软连接。则使用linux挂载ext4格式的vhdx然后重新进行软链接 挂载vhdx wsl ubuntu 20.04的虚拟磁盘在windows下的这个目录,不同的发行版在package目录下的地址不一样 在Package目…

ret2libc

一、原理 payload padding1 address of system() padding2 address of “/bin/sh” Padding1 随意填充, 长度刚好覆盖基地址 长度与shellcode处的一样的方法 address of system() 是system在内存中的地址,用来覆盖返回地址 system()函数地址在哪里? 从动态库中获取,计…

libc

1. libc (1). libc是Standard C library的简称,它是符合ANSI C标准的一个函数库。 libc库提供C语言中所使用的宏,类型定义,字符串操作函数,数学计算函数以及输入输出函数等。 正如ANSI C是C语言的标准一样,lib…

为什么要避免使用 libc

【CSDN 编者按】libc 是 Linux 下的标准 C 库&#xff0c;也是初学者写 hello world 包时含有的头文件 #include < stdio.h> 定义的地方&#xff0c;后来其逐渐被 glibc 给取代&#xff0c;本文作者列出了为什么要避免使用 libc 的 20 个理由。 作者 |Chris Wellons 译者…

统计学⑤——假设验证

统计学系列目录&#xff08;文末有大奖赠送&#xff09;&#xff1a; 统计学①——概率论基础及业务实战 统计学②——概率分布&#xff08;几何&#xff0c;二项&#xff0c;泊松&#xff0c;正态分布&#xff09; 统计学③——总体与样本 统计学④——置信区间 一、什么是假…

统计基础(四)假设检验

Hypothesis Testing 1.中心极限定理Central Limit Theorem1.1 X ˉ \bar{X} Xˉ的抽样分布1.2 p ^ \hat{p} p^​的抽样分布1.3 二项的正态逼近 2.假设检验概念2.1 零假设与备则假设2.2 如何制定决策规则 3.假设性检验步骤3.1假设检验框架3.2术语定义3.3 proportion test步骤3…

连续性概率

提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 欧拉常数连续型随机变数与概率密度函数正态分布标准正态分步检验t检验t假设 在我们将离散型数据的数值放大到无限&#xff0c;也就是讨论所谓的极限时&#xff0c; …

概率统计:离散分布和连续分布

1. 几种分布分类 (1) 离散分布&#xff1a;  伯努利分布&#xff08;零一分布&#xff0c;两点分布&#xff09;&#xff0c;二项分布&#xff0c;几何分布&#xff0c;泊松分布&#xff08;Poisson分布&#xff09; (2) 连续分布&#xff1a;  指数分布&#xff0c;正态分…

【概率论】随机试验、随机变量、离散型/连续型随机变量

1. 随机试验 满足以下3个条件的试验可以称为随机试验&#xff1a; 相同条件下可重复试验结果明确可知且不只一个试验前不知道哪个结果会发生 例如&#xff1a;我们平时做的抛硬币、掷骰子试验都是随机试验。以抛硬币试验为例&#xff1a;①该试验可以重复进行多次&#xff1…

连续型随机变量

连续型随机变量&#xff1a;continuous random variables 即在一定区间内变量取值有无限个&#xff0c;或数值无法一一列举出来 如下面的例子 概率密度函数&#xff08;probability density function, pdf&#xff09;: 在数学理论中&#xff0c;一个连续型随机变量的概率密度…

概率论基础 —— 3.离散型、连续型概率模型,及其概率密度与概率分布函数

在前面的文章里&#xff0c;已经带大伙了解了概率论的概率事件类型&#xff0c;以及针对某些事件的发生概率&#xff0c;以及针对全部场景的某事件的发生概率等基本知识。不过对于统计学专业来说&#xff0c;或者实际应用来说&#xff0c;接触最多的还是离散型和连续型概率&…

概率论的离散型随机变量和连续型随机变量

借鉴大佬的 下面附上网址 https://blog.csdn.net/ckk727/article/details/103435150 随机变量 随机变量是指变量的值无法预先确定仅以一定的可能性(概率)取值的量。 它是由于随机而获得的非确定值&#xff0c;是概率中的一个基本概念。 在经济活动中&#xff0c;随机变量是某…

计量经济学 联合假设检验 F统计量

考虑这样一个问题&#xff0c;现在你拥有1个被解释变量y和4个解释变量&#xff0c;如何判断x3,x4这2个变量是没有必要的&#xff1f; 或者换个说法&#xff0c;你现在有x1&#xff0c;x2这2个解释变量&#xff0c;突然你在寻找数据时&#xff0c;发现了另外2个变量x3&#xff0…

概率的性质——连续性

概率的连续性如下定义&#xff1a; 我们可以用韦恩图把他们表示出来&#xff0c;便于理解&#xff1a; 图1 对应性质&#xff08;1&#xff09; 图2 对应性质&#xff08;2&#xff09; 从图1中我们可以看出&#xff0c;集合单调不增&#xff0c;打个比方&#xff0c;此集合…

连续and离散系统的描述

系统的描述 系统的分类系统的框图表示系统的特性和分析方法时域离散系统 把最好的分享给大家&#xff0c;大家一起努力&#xff01; 系统的分类 连续系统与离散系统&#xff1a;输入和输出均为连续时间信号的系统称为连续时间系统&#xff1b;输入和输出均为离散时间信号的系统…

统计学:离散型和连续型随机变量的概率分布

主要随机变量一览表 随机变量概率分布均值方差一般离散型变量 p(x)的表、公式或者图 ∑xxp(x) ∑x(x−μ)2p(x) 二项分布 p(x)Cxnpxqn−x (x0,1,2,3⋅⋅⋅,n) np npq 泊松分布 p(x)λxe−λx! (x0,1,2,⋅⋅⋅) λ λ 超几何分布 p(x)CxrCn−xN−rCnN nrN r(N−r)n(N−n)N2(N−…

随机变量-离散-连续-假设检验方法

一组随机样本数据需要进行分析处理时&#xff0c;往往需要用到假设检验&#xff0c;对于离散变量discrete多用卡方检验&#xff0c;连续变量continuous用t检验或wilcoxon秩序和检验&#xff0c;具体的的使用场景如下 离散变量-卡方检验-适用条件 四格表&#xff1a; 所有的理…

常用的几种API获取ip地理位置的使用方法

最近公司让做一个用户登录、付费的时候记录操作人的地理位置。 搜了很多帖子&#xff0c;一开始用的淘宝的api&#xff0c;但是用了一段时间发现&#xff0c;这个api当获取的次数多了之后&#xff0c;就报404了&#xff0c;导致很多记录没有记录地址&#xff0c;虽然淘宝这个ap…

IP属地信息哪里来的?手把手教你实现通过IP查询属地信息

本文主要讲解IP查询属地信息的实现方法&#xff0c;以及基于Spring Boot实现IP属地信息查询项目。 〇、前言 近日&#xff0c;多个网络公众平台纷纷公开显示用户的IP属地&#xff0c;并且用户无法开启或关闭此功能。 用户的IP信息&#xff0c;平台是怎么知道的&#xff1f; …