关于libc表的总结

定义

libc是Linux下的ANSI C的函数库。

ANSI C是基本的C语言函数库,包含了C语言最基本的库函数。这个库可以根据 头文件划分为 15 个部分,其中包括:字符类型 ()、错误码()、 浮点常数 ()、数学常数 ()、标准定义 ()、 标准 I/O ()、工具函数 ()、字符串操作 ()、 时间和日期 ()、可变参数表 ()、信号 ()、 非局部跳转 ()、本地信息 ()、程序断言 () 等等。这在其他的C语言的IDE中都是有的。

关于pwn题如何加载目标libc的方法

(经常会遇到题目提供libc,但是本地调试的时候加载的是本地libc)

方法一:

添加环境变量的方法:

export LD_LIBRARY_PATH=‘pwd’(当前目录为加载目录)
export LD_PRELOAD=本地libc(加载本地pwn题目下的libc)
在退出前:unset LD_PRELOAD(调试完记得删除环境变量)
注意:(在64位的ubuntu下调试32位程序会导致libc无法加载)

方法二:

p=process([’./bin’],env={“LD_PRELOAD”:"./libc-2.23.so"}([’./bin’]为需要调试的二进制文件名,libc-2.23.so为需要加载的目标libc)

关于获取libc的其他方法

在无libc库函数的情况下,利用DynELF工具来泄漏system函数的地址,然后再往一个地方写’/bin/sh’字符串并构造调用system函数的栈。
虽然DynELF是一个dump利器,但是有时候我们也会碰到一些令人尴尬的意外情况,比如写不出来leak函数,下libc被墙等等。方法1: https://libc.blukat.me,这是一个在线查询libc版本的网站。通过给出libc_start_main和read的地址后三位可以查到libc版本
关于libc表的总结_第1张图片方法二:利用ctf工具libcSearcher
https://github.com/lieanu/LibcSearcher

关于libc表的总结_第2张图片

你可能感兴趣的:(libc)