我试图根据利用缓冲区溢出漏洞(在x86-32 Linux机器上)来自动执行返回到libc的攻击。 我需要一种方法来find不使用gdb的libc中execve函数的地址: (gdb)p execve $ 1 = {} 0xf7ec1b30 ASLR保护被禁用,以允许这种技术。 有没有办法得到一个函数的地址在libc execve? 用程序或其他可自动的方式? (没有gdb,因为在bash脚本或C程序中不能自动生成)。 任何build议是受欢迎的。
我试图让我们的程序在一些旧的Linux版本上运行。 防止它的一个常见导入是__longjmp_chk ,在glibc 2.11中添加,但在旧版本中丢失。 一个“解决scheme”是使用-D_FORTIFY_SOURCE=0但这会closures目标libc中存在的其他强化函数( __printf_chk等)。 有没有办法使__longjmp_chk是一个“弱导入”,如果存在,将使用libc.so.6的函数,如果不存在则返回到本地存根?
我们知道unistd.h是一个重要的标题,但是我不确定它是否来自内核源代码,或者直到我们安装libc才安装它。
我刚刚发现,glibc 2.23有一个关于stdio函数fmemopen()的bug,请参阅例如在使用fmemopen打开的FILE *上使用rewind() 。 (这里描述的bug的行为并不是唯一的问题,如果缓冲区的大小超过8192字节,问题会变得更加严重) 现在我正在考虑使用刚刚发布的glibc 2.24,它修复了这个bug。 但是,我的目标用户环境是Ubuntu计算机,我认为在Ubuntu支持glibc 2.24之前还需要一些时间。 那么,当我尝试分发我的代码时,我会遇到什么问题? 或者,一些相关的问题: 我什么时候可以期待Ubuntu将支持glibc 2.24? 系统中可能有两个libc版本吗? 有没有可能静态链接libc? 事实上,我只需要stdio部分。 是否有可能只使用2.24的stdio,这会给予任何好处吗?
例如,Linux / i386上的glibc将cookie存储在%gs:0x14 。 除了__stack_chk_guard符号之外,是否还有其他需要查找的平台来查找Cookie? (这是gcc -fstack-protector生成的代码在函数序言堆栈中存储的值,并在返回防垛堆栈之前检查)。
lfind / lsearch性能比典型的循环解决scheme要好吗? 这些function是否有特殊的原因?
我在ubuntu 12.04上使用cmake构build了一个大型的C ++项目,然后把得到的二进制包安装到Ubuntu 11.04上。 然而,程序失败,说它需要glibc版本2.14,但只能find版本2.13。 我怎样才能find为什么glibc => 2.14是必需的?
CentOS似乎在每个版本中捆绑了新版本的glibc库RPM。 6.0有glibc-2.12-1.7.el6.x86_64.rpm 6.1有glibc-2.12-1.25.el6.x86_64.rpm 6.2有glibc-2.12-1.47.el6.x86_64.rpm 6.3有glibc-2.12-1.80.el6_3.5.x86_64 每个RPM中的glibc版本有什么不同? 我正在寻找mallopt()函数的实现,它允许我们configurationmalloc()所使用的场所的数量。 mallopt(M_ARENA_MAX,1)在6.0,6.1和6.2中没有任何作用,但它在6.3中工作,尽pipeCentOS的所有版本似乎都具有相同版本的GLibc – 2.12。 我的具体问题是:即使所有CentOS 6.X版本的glibc报告了相同的版本号 – 2.12 – mallopt(M_ARENA_MAX)只能在CentOS 6.3上使用。 有没有办法找出与CentOS版本捆绑在一起的glibc版本的差异?
我最近在我的Ubuntu服务器上编译了一个二进制文件并分发了它 这是用户遇到的错误: Failed (/lib32/libc.so.6: version `GLIBC_2.17' not found 任何想法如何解决它? 我之前使用过另外一个Linux发行版(CentOS 6),它工作正常(对于我和其他用户)。 我该如何解决?
我正在使用单声道,我的可执行文件正常退出。 不过做echo $? 执行后,我得到249。 我无法find单声道返回码列表,有没有find它的地方?