首页
社区
课程
招聘
PWN题获取细分版本libc方案
发表于: 2022-3-18 16:20 15668

PWN题获取细分版本libc方案

2022-3-18 16:20
15668

在平时做题的时候给的libc基本上都是去除了调试符号的ibc,而没有调试符号会使得pwngdb中heap bins等命令不可用,导致我这种新手调试起来碍手碍脚。
当然也有很多中方式获得带调试符号的libc,例如:

使用patchelf也不能很好的解决问题。虽然可以使用eu-unstrip将调试符号附加到文件中,但是最遗憾,虽然上面有各个libc的版本的最新和初始版本,却不曾见到每个libc的每个小版本。

在这里可以找到libc版本的发行历史
Ubuntu glibc package
可以直接运行libc文件查看libc子版本

或者使用strings命令查找

已经由大佬写了自动下载脚本
zeyugao / glibc-launchpad
也可以点进list中手动下载需要版本的libc以及调试符号deb文件

释放deb得到libc和调试符号

可执行文件libc

调试符号libc:(虽然看起来可以执行,但是里面只有符号表)

有关调试符号和strip的基本概念可以看一下这篇文章:
深入理解debuginfo
将libc和调试符号放到同一个目录下方便操作

eu-stripeu-unstrip都在elfutils这个包中,所以要先安装elfutils

可以看到,符号文件的大小变大了,说明是将不带符号的libc给直接附加到了符号上面,因为都是elf文件,所以能这么操作。

给libc-2.27_sym.so和ld-2.27.so加一下执行权限:

可以看到现在的libc-2.27_sym.so既能够运行查看版本,有带有调试符号了

p = process(["./ld-xxx.so", "./file"],
            env={"LD_PRELOAD":"./libc-xxx.so "})
p = process(["./ld-xxx.so", "./file"],
            env={"LD_PRELOAD":"./libc-xxx.so "})
./libc-2.27.so
GNU C Library (Ubuntu GLIBC 2.27-3ubuntu1.4) stable release version 2.27.
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 7.5.0.
libc ABIs: UNIQUE IFUNC
For bug reporting instructions, please see:
<https://bugs.launchpad.net/ubuntu/+source/glibc/+bugs>.
./libc-2.27.so
GNU C Library (Ubuntu GLIBC 2.27-3ubuntu1.4) stable release version 2.27.
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 7.5.0.
libc ABIs: UNIQUE IFUNC
For bug reporting instructions, please see:
<https://bugs.launchpad.net/ubuntu/+source/glibc/+bugs>.

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 8
支持
分享
最新回复 (2)
雪    币: 640
活跃值: (1101)
能力值: ( LV4,RANK:44 )
在线值:
发帖
回帖
粉丝
2
想问一下2.34之后的版本没有libc符号表了,只有.build-id文件夹,应该如何恢复符号呢?
2023-7-10 19:27
0
雪    币: 276
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
Ysiel 想问一下2.34之后的版本没有libc符号表了,只有.build-id文件夹,应该如何恢复符号呢?
把原本的libc调试符号备份好,然后直接将锁需要的.build-id 放到默认的调试符号目录就可以了
2023-11-3 19:43
0
游客
登录 | 注册 方可回帖
返回
//