首页 > 其他分享 >/lib64/libc.so.6 错误导致的系统崩溃

/lib64/libc.so.6 错误导致的系统崩溃

时间:2023-12-20 15:23:13浏览次数:28  
标签:libc so usr so.6 2.17 lib64

/lib64/libc.so.6 错误导致的系统崩溃
缘由
我们有个同事要安装一个软件,就用yum 安装,然后就悲剧。安装完成之后 发现无论执行任何命令都会报错,如下错误

psgrep: relocation error: : /usr/lib64/libpthread.so.0: relocation error: symbol __libc_dl_error_tsd, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference/usr/lib64/libpthread.so.0: symbol __libc_dl_error_tsd, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference

吓尿了,遇到这种错误就懵逼了,以为系统坏了,这个坏了可不是重做系统就好了(这个服务器是在异地,真要出问题 都要飞过去了)。

此时最最重要一点是不要关闭当前窗口,不要重新启动机器! 一旦关闭窗口将无法重新连接(可以自己新建窗口试下),重启机器后也将无法进入系统 。比较幸运的是 我们当时开了两个窗口,要不然就麻烦了

原因
libc.so.6是C运行时库 glibc的软链接,程序启动和运行时,是根据libc.so.6软链接找到glibc库

lib64/libc.so.6是一个软链接,指向/lib64/libc.so-2.1x,2.1x表示其对应版本,去兼容相应CentOS版本

很多基本命命令依赖glibc,libc.so.6链接对应版本不一致将导致系统的几乎所有程序不能工作

解决过程
由于我们也是第一次遇到,没撒经验 那就搜索了,根据相关文章思路 以及通过少的可怜可以执行的命令试错 大致知道了原因:应该是有人升级了内核,但是升级失败了,导致服务器存在两个内核,在执行yum的过程中应该把错误的内核指向了 /lib64/libc.so.6 。我们通过 命令发现 /lib64/libc.so-2..xx.so 有两个版本(tab 命令补全还可以使用),我们参考了其他机器发现都使用2.17 版本 。

但是我们在 执行  “sln /usr/lib64/libc-2.17.so /usr/lib64/libc.so.6” 过程中 发现 一直提示 一个很奇怪的错误,最后我们发现 其实 /lib64/libc-2.17.so 文件其实也是有问题的,幸好我们查找整个服务器备份了一个 2.17 的 so 文件(喜极而泣),然后把 这个 so 替换了 /lib64/libc-2.17.so 。发现软链之后就解决了一些问题。

解决方法
主要指向如下命令,就可以解决。

sln /usr/lib64/ld-2.17.so /usr/lib64/ld-linux-x86-64.so.2
sln /usr/lib64/libc-2.17.so /usr/lib64/libc.so.6

标签:libc,so,usr,so.6,2.17,lib64
From: https://www.cnblogs.com/hefeng2014/p/17916585.html

相关文章

  • 安装mongo提示报错libcrypto.so.1.1解决方法
    1、输入网址:www.openssl.org第一种下载:点击Downloads→点击要下载的openssl然后解压:tar-zxvfopenssl.x.x.xx.tar.gz第二种下载:wgethttps://www.openssl.org/source/openssl-1.1.1w.tar.gz解压:tar-zxvfopenssl-1.1.1w.tar.gz切换到解压好的目录:cdopenssl-1.1.1w编译安装:./conf......
  • 【pwn】orw&rop --泄露libc基址,orw
    我们先看看程序的保护的情况因为题目提示了orw,我们可以沙箱检测一下可以发现是禁用的execve函数的,接着看函数逻辑这里格式化字符串漏洞可以泄露canary和puts函数地址,先确定一下参数位置可以发现参数是在第六个位置,接下来就是构造ROP,调用read函数读取shellcode到mmap开辟的......
  • 【pwn】puts or system? --格式化字符串漏洞泄露libc基址
    还是先看一下保护情况开了canary,接着看主函数逻辑看到这里的代码逻辑,我一开始是想通过printf泄露出canary的值,然后再用ret2libc来打,但是我发现这个libc不好泄露,一般的泄露的思路都是构造ROP,通过puts函数泄露出puts的got表内容,但是我在寻找rdi这个gadget的时候,是找不到的这也......
  • 高版本gcc编译出的程序在低版本glibc机器上运行
    比如我们用gcc9.3.0编译程序,但需要发布的机器gcc版本是4.8.5,怎么办?你可能想到如下方法静态编译容器发布打包依赖的so,使用本地so运行程序1.静态编译将libc和libstdc++静态编译,编译时带上如下参数。g++-static-libgcc-static-libstdc++glibc并不推荐静态链接,你依赖......
  • WSL安装软件报错/sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbo
    原因/usr/lib/wsl/lib/目录下都是文件而不是链接,且该目录只读,需要在其他目录操作解决cd/usr/lib/wslsudomkdirlib2sudoln-slib/*lib2更改wsl配置文件sudovim/etc/ld.so.conf.d/ld.wsl.conf将/usr/lib/wsl/lib改为/usr/lib/wsl/lib2测试修改是否生效sudo ldco......
  • pwn知识——ret2libc
    这一篇主要记录的就是有关libc泄露了,困扰了我许久的玩意终于有写出来的一天了,不容易啊(哭)不过理解了之后确实就会觉得好写很多嘞在写题解之前还是写写libc泄露的原理和流程比较好,毕竟我自己学的时候搜索各种资料、看各种视频,真的都看得头大,一路摸爬滚打属实不易,我也希望能写出一......
  • 解决ls: relocation error: /lib64/libacl.so.1: symbol getxattr, version ATTR_1.0
    解决ls:relocationerror:/lib64/libacl.so.1:symbolgetxattr,versionATTR_1.0notdefinedinfilelibattr.so.1withlinktimereference参考:https://www.cnblogs.com/biohujun/p/17613372.html 这个问题是在我conda装了一个包之后就出现了,ls等最基础的命令没有办......
  • C++ LibCurl实现Web指纹识别
    Web指纹识别是一种通过分析Web应用程序的特征和元数据,以确定应用程序所使用的技术栈和配置的技术。这项技术旨在识别Web服务器、Web应用框架、后端数据库、JavaScript库等组件的版本和配置信息。通过分析HTTP响应头、HTML源代码、JavaScript代码、CSS文件等,可以获取关于Web应用程......
  • C++ LibCurl实现Web隐藏目录扫描
    LibCurl是一个开源的免费的多协议数据传输开源库,该框架具备跨平台性,开源免费,并提供了包括HTTP、FTP、SMTP、POP3等协议的功能,使用libcurl可以方便地进行网络数据传输操作,如发送HTTP请求、下载文件、发送电子邮件等。它被广泛应用于各种网络应用开发中,特别是涉及到数据传输的场景。......
  • ./SNeP_111: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by ./SNeP
     001、软件报错如下: 002、系统(base)[root@pc1software]#cat/etc/redhat-releaseCentOSLinuxrelease7.6.1810(Core) 003、查看glibc版本(base)[root@pc1software]#lsSNeP_111(base)[root@pc1software]#./SNeP_111##报错如下./SNeP_111:......