参考:https://cloud.tencent.com/developer/article/1745278
题目:pwn2.zip
动态链接mips程序无法运行
我们虽然有了mips运行环境,但是直接运行程序是运行不起来的,这是因为mips架构的elf文件需要在mips环境中才能运行,而且还需要相应的动态链接库。
用户模式运行
为了获取相应的动态链接库,有两种方法:
- 通过buildroot自行编译交叉编译工具以及动态链接库
- 下载已经编译好的
这里选用第二种方法,下载链接:https://www.uclibc.org/downloads/binaries/0.9.30.1/
Downloads.7z
系统模式运行
网络配置
sudo apt-get install uml-utilities
sudo apt-get install bridge-utils
首先使用ifconfig查看本机网络,下面ens33是能够联网的网卡,lo是本地环回接口。
我们要先关闭ens33网卡,
创建virbr0虚拟网桥,将网卡设置为virbr0的一个接口;
如果只有一个网桥;
则关闭生成树协议;
设置virbr0的转发延迟为1;
设置 virbr0 的hello时间为1。
sudo ifconfig ens33 down
sudo brctl addbr virbr0
sudo brctl addif virbr0 ens33
sudo brctl stp virbr0 off
sudo brctl setfd virbr0 1
sudo brctl sethello virbr0 1
然后启用虚拟网桥;
启用ens33网卡;
从 dhcp 服务器获取虚拟网桥IP地址。
sudo ifconfig virbr0 0.0.0.0 promisc up
sudo ifconfig ens33 0.0.0.0 promisc up
sudo dhclient virbr0
创建一个tap0接口,
并添加到虚拟网桥,
然后启用tap0接口,这个tap0接口会和qemu虚拟机相连。
sudo tunctl -t tap0
sudo brctl addif virbr0 tap0
sudo ifconfig tap0 0.0.0.0 promisc up
出现问题
安装tun模块
见物理机配网络配置问题置
下载启动镜像
前面分析可知这道题是小端的,所以我们需要下载el(little endian)镜像,这里我们选择debian_wheezy_mipsel_standard.qcow2;内核选择vmlinux-3.2.0-4-4kc-malta。
下载链接:https://people.debian.org/~aurel32/qemu/mipsel/
mips.7z
然后启动镜像
sudo qemu-system-mipsel -M malta -kernel vmlinux-3.2.0-4-4kc-malta -hda debian_wheezy_mipsel_standard.qcow2 -append "root=/dev/sda1 console=tty0" -net nic -net tap,ifname=tap0,script=no,downscript=no -nographic
但是经过多次尝试均显示
我们从这个网站下载镜像启动
http://ftp.debian.org/debian/dists/stable/main/installer-mipsel/20210731/images/malta/netboot/
并尝试通过这个镜像手动安装mips架构的debian系统,但是在虚拟机中的ubuntu系统中始终无法加载内核
之后为在虚拟机设置选项中的VT虚拟化全部开启,但是依然不管用,所以怀疑虚拟机的问题,同时我在windows10物理机安装qemu并成功启动mips架构的debian系统,地址:
物理机运行qemu
安装windows10和ubuntu16.04双系统
单个盘
双盘
本环境为对交换空间(swap)进行分区,swap的空间大小一般设置成物理内存大小相同,本质是为了在物理内存不够时将内存保存到硬盘的技术,从而在运行需要消耗大量内存的软件依然不会闪退等问题
物理机的网络配置问题
1、使用有线网卡
由于用的是笔记本,具有无线网卡和有限网卡,在执行brctl addif virbr0 ens33(将虚拟网卡桥接到真实网卡时,无线网卡显示操作系统不支持桥接到无线网卡
所以便直接禁用无线网卡
2、Set ‘tap0’ persistent and owned by uid 0
通过modinfo tun命令确认是否存在tun模块,结果显示
modinfo: ERROR: Module tun not found.
于是开始安装tun
地址:https://blog.csdn.net/lishuhuakai/article/details/70305543
注意uname -a看看系统内核版本,之后apt search linux-source查找相近的内核源码版本
通过这条命令解决:apt-get install libssl-dev
之后,按照该博客步骤进入tun的编译阶段,耗时较长
出现问题:symbolmap: 00000001: invalid section
解决地址:https://bbs.csdn.net/topics/392552451?list=55315341
一直出现错误经过defconfig和make之后编译成功,但是没有对tun进行编译,我们再来一遍
这次没有报错,但是insmod tun.ko时还是显示无效的模块格式
用dmesg命令查看提示显示版本不对把编译好的tun.ko拷贝到/lib/,通过强制加载
不行,最后
地址:https://blog.csdn.net/qq_34160841/article/details/104901266
最后,系统启动失败
绝了,搞不动了
第二天,完全按照https://blog.csdn.net/qq_34160841/article/details/104901266
成功