首页
社区
课程
招聘
一个问题的处理过程
发表于: 2018-8-15 13:22 14383

一个问题的处理过程

2018-8-15 13:22
14383
最近在研究家用路由器那本书,很不顺利,在看到P72页的时候遇到以下一些问题,做一些记录,并总结一下,给我自己和后来人借鉴借鉴:
当前环境是:Linux ubuntu 4.2.0-42-generic #49~14.04.1-Ubuntu SMP Wed Jun 29 20:22:18 UTC 2016 i686 i686 i686 GNU/Linux这个虚拟机 是网上的attifyOS


前提:qemu-mips是存在于当前目录下面的!
经过一番查询之后,可能是这几个问题:
1.可能没有bash
2.没有qemu-mips
3.依赖库没有拷过来
三种方法均实验了之后还是没有效果
在上一层目录chroot:
报了下面这个错: 
  

同时在网上看到一篇文章跟我这个情况有点类似:https://www.52pojie.cn/thread-600272-1-1.html
解决这个问题的可能存在的几个方法:
1.更新qemu
2.修改qemu的源文件
3 文件的打开方式极有可能不正确,使用了错误的程序执行了ELF文件
一>针对第一种方法:我使用了apt-get upgrade qemu 结果执行完这条指令之后,qemu版本没有更新,不知道为什么,也尝试了apt-get update ,仍然无济于事==.上面这篇文章里面是更新了qemu之后才将问题解决的!无法更新的问题这里就不知道怎么解决了==;
二. 
查看一下elf头 
  

经过查阅资料(揭秘家用路由器0day漏洞挖掘艺术)发现确实是有可能存在下面这么一种情况的:

 

static bool elf_check_ehdr(struct elfhdr *ehdr)

{

    return (elf_check_arch(ehdr->e_machine)

            && ehdr->e_ehsize == sizeof(struct elfhdr)

            && ehdr->e_phentsize == sizeof(struct elf_phdr)

            && ehdr->e_shentsize == sizeof(struct elf_shdr)

            && (ehdr->e_type == ET_EXEC || ehdr->e_type == ET_DYN));

}

&& ehdr->e_shentsize == sizeof(struct elf_shdr) 这句话是说 节头大小要和elf_shdr大小相等,将这句注释掉;
但是我这里是这样的:


到这里,也就是说修改qemu的源文件这种方法也不行了!

3.设置好LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/home/oit/Downloads/_605.bin.extracted/squashfs-root-0/lib



root@ubuntu:/home/oit/Downloads/_605.bin.extracted/squashfs-root-0# chroot . ./qemu-mips ./bin/boa

./bin/boa: Invalid ELF image for this architecture

root@ubuntu:/home/oit/Downloads/_605.bin.extracted/squashfs-root-0# chroot . ./qemu-arm ./bin/boa

./qemu-arm: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory

root@ubuntu:/home/oit/Downloads/_605.bin.extracted/squashfs-root-0# file ./bin/boa

./bin/boa: ELF 32-bit MSB  executable, MIPS, MIPS-I version 1 (SYSV), dynamically linked (uses shared libs), corrupted section header size

root@ubuntu:/home/oit/Downloads/_605.bin.extracted/squashfs-root-0# ldd qemu-arm

    linux-gate.so.1 =>  (0xb77db000)

    librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xb55f4000)

    libglib-2.0.so.0 => /lib/i386-linux-gnu/libglib-2.0.so.0 (0xb54e8000)

    libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xb54ce000)

    libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb53e6000)

    libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb539f000)

    libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb5382000)

    libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb5366000)

    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb51b5000)

    libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xb5177000)

    /lib/ld-linux.so.2 (0x80007000)

root@ubuntu:/home/oit/Downloads/_605.bin.extracted/squashfs-root-0# ldd qemu-mips

    linux-gate.so.1 =>  (0xb77d0000)

    librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xb55ef000)

    libglib-2.0.so.0 => /lib/i386-linux-gnu/libglib-2.0.so.0 (0xb54e3000)

    libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb549d000)

    libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb5480000)

    libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb5463000)

    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb52b2000)

    libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xb5274000)

    /lib/ld-linux.so.2 (0x800ea000)

root@ubuntu:/home/oit/Downloads/_605.bin.extracted/squashfs-root-0# cp /lib/i386-linux-gnu/librt.so.1 ./lib

root@ubuntu:/home/oit/Downloads/_605.bin.extracted/squashfs-root-0# cp /lib/i386-linux-gnu/libglib-2.0.so.0 ./lib

root@ubuntu:/home/oit/Downloads/_605.bin.extracted/squashfs-root-0# cp /lib/i386-linux-gnu/libm.so.6 ./lib

root@ubuntu:/home/oit/Downloads/_605.bin.extracted/squashfs-root-0# cp /lib/i386-linux-gnu/libgcc_s.so.1 ./lib

root@ubuntu:/home/oit/Downloads/_605.bin.extracted/squashfs-root-0# cp /lib/i386-linux-gnu/libpthread.so.0 ./lib

root@ubuntu:/home/oit/Downloads/_605.bin.extracted/squashfs-root-0# cp /lib/i386-linux-gnu/libc.so.6 ./lib

root@ubuntu:/home/oit/Downloads/_605.bin.extracted/squashfs-root-0# cp /lib/i386-linux-gnu/libpcre.so.3 ./lib

root@ubuntu:/home/oit/Downloads/_605.bin.extracted/squashfs-root-0# cp /lib/ld-linux.so.2 ./lib

root@ubuntu:/home/oit/Downloads/_605.bin.extracted/squashfs-root-0# chroot . ./qemu-arm ./bin/boa./qemu-arm: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory

root@ubuntu:/home/oit/Downloads/_605.bin.extracted/squashfs-root-0# echo $LD_LIBRARY_PATH /home/oit/Downloads/_605.bin.extracted/squashfs-root-0/lib

root@ubuntu:/home/oit/Downloads/_605.bin.extracted/squashfs-root-0# chroot . ./qemu-arm ./bin/boa./qemu-arm: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory


至此,我tmd还能说什么,依赖库也考到相应的目录下面了,该做的基本都做了,我换个系统试试看

换了一个系统之后:
用的是Debian9.5;

root@debianRichard:/home/richard/下载/_605.bin.extracted/squashfs-root-0# qemu-mips -version

qemu-mips version 2.8.1(Debian 1:2.8+dfsg-6+deb9u4)

Copyright (c) 2003-2016 Fabrice Bellard and the QEMU Project developers


root@debianRichard:/home/richard/下载/_605.bin.extracted/squashfs-root-0# ldd qemu-mips

    linux-gate.so.1 (0xb7738000)

    libgmodule-2.0.so.0 => /usr/lib/i386-linux-gnu/libgmodule-2.0.so.0 (0xb5484000)

    libglib-2.0.so.0 => /lib/i386-linux-gnu/libglib-2.0.so.0 (0xb5358000)

    librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xb534d000)

    libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb52f8000)

    libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb52da000)

    libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb52bd000)

    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb5106000)

    libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb5101000)

    libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xb5088000)

    /lib/ld-linux.so.2 (0xb773a000)


root@debianRichard:/home/richard/下载/_605.bin.extracted/squashfs-root-0# mkdir lib

mkdir: 无法创建目录"lib": 文件已存在




root@debianRichard:/home/richard/下载/_605.bin.extracted/squashfs-root-0# cp /usr/lib/i386-linux-gnu/libgmodule-2.0.so.0 ./

root@debianRichard:/home/richard/下载/_605.bin.extracted/squashfs-root-0# cp /lib/i386-linux-gnu/libglib-2.0.so.0 ./lib

root@debianRichard:/home/richard/下载/_605.bin.extracted/squashfs-root-0# cp /lib/i386-linux-gnu/librt.so.1 ./lib

root@debianRichard:/home/richard/下载/_605.bin.extracted/squashfs-root-0# cp /lib/i386-linux-gnu/libgcc_s.so.1 ./lib

root@debianRichard:/home/richard/下载/_605.bin.extracted/squashfs-root-0# cp /lib/i386-linux-gnu/libgcc_s.so.1 ./lib


root@debianRichard:/home/richard/下载/_605.bin.extracted/squashfs-root-0# cp /lib/i386-linux-gnu/libm.so.6 ./lib

root@debianRichard:/home/richard/下载/_605.bin.extracted/squashfs-root-0# cp /lib/i386-linux-gnu/libpthread.so.0 ./lib

root@debianRichard:/home/richard/下载/_605.bin.extracted/squashfs-root-0# cp /lib/i386-linux-gnu/libc.so.6 ./lib

root@debianRichard:/home/richard/下载/_605.bin.extracted/squashfs-root-0# cp /lib/i386-linux-gnu/libdl.so.2 ./lib

root@debianRichard:/home/richard/下载/_605.bin.extracted/squashfs-root-0# cp /lib/i386-linux-gnu/libpcre.so.3 ./lib

root@debianRichard:/home/richard/下载/_605.bin.extracted/squashfs-root-0# cp /lib/ld-linux.so.2 ./lib

以上所做的工作是吧依赖库拷贝至对应的目录下面;
继续执行下面命令:
root@debianRichard:/home/richard/下载/_605.bin.extracted/squashfs-root-0# sudo chroot . ./qemu-mips ./bin/boa
./qemu-mips: error while loading shared libraries: libgmodule-2.0.so.0: cannot open shared object file: No such file or directory

做出如下修改:

 

root@debianRichard:/home/richard/下载/_605.bin.extracted/squashfs-root-0# cp /usr/lib/i386-linux-gnu/libgmodule-2.0.so.0 ./lib



终于出现了跟家用路由器一书中p72页面类似的状况!
由此确定在attfyOS里面极有可能就是软件版本的问题;
但是我有点不解的是为什么软件升级不了(在affifyOS和Bebian里面都没有升级了)???我不知道我哪里的操作出了问题,小白初次发帖,还请大佬指点一 波



 


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (14)
雪    币: 131
活跃值: (415)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
2
你这问题单纯是因为qemu的运行库没有导入
chroot之后根目录切换到固件的根目录了  哪还有qemu的运行库
这运行库直接复制到固件根目录的对应位置就行。。。。。。。。
2018-8-16 09:47
0
雪    币: 223
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
伤字号 你这问题单纯是因为qemu的运行库没有导入 chroot之后根目录切换到固件的根目录了 哪还有qemu的运行库 这运行库直接复制到固件根目录的对应位置就行。。。。。。。。
你是说缺少运行库才导致软件不好升级???
2018-8-16 15:27
0
雪    币: 131
活跃值: (415)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
4
cdcdiot 你是说缺少运行库才导致软件不好升级???
不是升级的问题  是你一开始那个问题
哪个软件没法升级你也没说呀。。。
而且attifyOS版本比较老  我用了一下也没什么亮点  推荐用debian自己搭环境  也不复杂
2018-8-16 16:11
0
雪    币: 223
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
伤字号 不是升级的问题 是你一开始那个问题 哪个软件没法升级你也没说呀。。。 而且attifyOS版本比较老 我用了一下也没什么亮点 推荐用debian自己搭环境 也不复杂
就是qemu无法升级啊,我在attifyOS和Debian里面都试过了,都无法升级,另外,老哥,我看了一下你写的那个帖子,感觉不够详细啊
2018-8-16 16:38
0
雪    币: 131
活跃值: (415)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
6
cdcdiot 就是qemu无法升级啊,我在attifyOS和Debian里面都试过了,都无法升级,另外,老哥,我看了一下你写的那个帖子,感觉不够详细啊[em_16]
你qemu什么版本
我那个帖子还有啥问题可以提出来  我也就是写了个大概  前面环境搭建的感觉比较简单就略过了
2018-8-16 16:49
0
雪    币: 223
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
伤字号 你qemu什么版本 我那个帖子还有啥问题可以提出来 我也就是写了个大概 前面环境搭建的感觉比较简单就略过了
attifyOS里面qemu是2.0版本的 ,我用apt-get upgrade qemu命令升级的,没有效果,我自己下载的Debian里面,自己安装的qemu是3.8版本的,好,我会持续关注你那个帖子的,有不明白还会像你请教的,到时候还请你多多指导啊
2018-8-16 16:58
0
雪    币: 131
活跃值: (415)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
8
cdcdiot attifyOS里面qemu是2.0版本的 ,我用apt-get upgrade qemu命令升级的,没有效果,我自己下载的Debian里面,自己安装的qemu是3.8版本的,好,我会持续关注你那个帖 ...
3.8的qemu应该够用了啊。。。你要想用再新版的可以自己下载源码编译安装
相互学习相互学习
2018-8-16 17:05
0
雪    币: 11
活跃值: (12)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
9
一直用Ubuntu,qemu可以正常更新正常使用
2018-8-16 21:27
0
雪    币: 223
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
照片记录谁 一直用Ubuntu,qemu可以正常更新正常使用
你用的是哪个版本
2018-8-16 22:40
0
雪    币: 11
活跃值: (12)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
11
cdcdiot 你用的是哪个版本
系统是Ubuntu 16.04 x86_64,然后qemu及qemu-static应该都是直接使用apt-get 安装的,版本是2.5.0
最后于 2018-8-17 21:27 被照片记录谁编辑 ,原因:
2018-8-17 21:16
0
雪    币: 416
活跃值: (162)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
12
照片记录谁 cdcdiot 你用的是哪个版本 系统是Ubuntu 16.04 x86_64,然后qemu及qemu-static ...
你是按照家用路由器那本书上面把里面所有工具都安装了么??
2018-8-17 23:14
0
雪    币: 11
活跃值: (12)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
13
蓝色淡风 你是按照家用路由器那本书上面把里面所有工具都安装了么??
主要是qmeu和qemu-static吧,用apt-get安装的,其他没啥了吧,或者实际要用时再自行安装相应的工具。
2018-8-18 19:45
0
雪    币: 861
活跃值: (683)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
14

解决方法 http://www.devttys0.com/2011/12/qemu-vs-sstrip/

sudo apt-get remove qemu 
sudo apt-get remove qemu-system 
sudo apt-get remove qemu-user-static
sudo apt-get install libpixman-1-dev
git clone git://git.qemu.org/qemu.git 
cd qemu 
git submodule update --recursive 
 sudo apt install libglib2.0 libglib2.0-dev 
sudo apt install autoconf automake libtoolcd  ​
 ./configure 
sudo  make && sudo make install
最后于 2019-2-13 12:33 被八岛编辑 ,原因: 更新命令
2019-2-13 11:38
0
雪    币: 2
活跃值: (60)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
您好,大佬,想请教你提出的这个问题,请问能加你的qq或者微信吗:我的 QQ:737748384, 
2019-7-29 11:36
0
游客
登录 | 注册 方可回帖
返回
//