参考:https://cloud.tencent.com/developer/article/1745278
题目:pwn2.zip

动态链接mips程序无法运行

我们虽然有了mips运行环境,但是直接运行程序是运行不起来的,这是因为mips架构的elf文件需要在mips环境中才能运行,而且还需要相应的动态链接库。
image.png

用户模式运行

为了获取相应的动态链接库,有两种方法:

  • 通过buildroot自行编译交叉编译工具以及动态链接库
  • 下载已经编译好的

这里选用第二种方法,下载链接:https://www.uclibc.org/downloads/binaries/0.9.30.1/
Downloads.7z
image.png
image.png

系统模式运行

目的:系统模式配置一台能够联网的qemu虚拟机

网络配置

  1. sudo apt-get install uml-utilities
  2. sudo apt-get install bridge-utils

首先使用ifconfig查看本机网络,下面ens33是能够联网的网卡,lo是本地环回接口。
image.png
我们要先关闭ens33网卡,
创建virbr0虚拟网桥,将网卡设置为virbr0的一个接口;
如果只有一个网桥;
则关闭生成树协议;
设置virbr0的转发延迟为1;
设置 virbr0 的hello时间为1。

  1. sudo ifconfig ens33 down
  2. sudo brctl addbr virbr0
  3. sudo brctl addif virbr0 ens33
  4. sudo brctl stp virbr0 off
  5. sudo brctl setfd virbr0 1
  6. sudo brctl sethello virbr0 1

然后启用虚拟网桥;
启用ens33网卡;
从 dhcp 服务器获取虚拟网桥IP地址。

  1. sudo ifconfig virbr0 0.0.0.0 promisc up
  2. sudo ifconfig ens33 0.0.0.0 promisc up
  3. sudo dhclient virbr0

创建一个tap0接口,
并添加到虚拟网桥,
然后启用tap0接口,这个tap0接口会和qemu虚拟机相连。

  1. sudo tunctl -t tap0
  2. sudo brctl addif virbr0 tap0
  3. sudo ifconfig tap0 0.0.0.0 promisc up

出现问题
image.png

安装tun模块

见物理机配网络配置问题置

配置好的效果见下:
image.png

下载启动镜像

前面分析可知这道题是小端的,所以我们需要下载el(little endian)镜像,这里我们选择debian_wheezy_mipsel_standard.qcow2;内核选择vmlinux-3.2.0-4-4kc-malta。
下载链接:https://people.debian.org/~aurel32/qemu/mipsel/
mips.7z
然后启动镜像

  1. 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

但是经过多次尝试均显示
image.png
我们从这个网站下载镜像启动
http://ftp.debian.org/debian/dists/stable/main/installer-mipsel/20210731/images/malta/netboot/
image.png

并尝试通过这个镜像手动安装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查找相近的内核源码版本

图片.png
通过这条命令解决:apt-get install libssl-dev
之后,按照该博客步骤进入tun的编译阶段,耗时较长
图片.png
出现问题:symbolmap: 00000001: invalid section

解决地址:https://bbs.csdn.net/topics/392552451?list=55315341
一直出现错误经过defconfig和make之后编译成功,但是没有对tun进行编译,我们再来一遍
图片.png
这次没有报错,但是insmod tun.ko时还是显示无效的模块格式
图片.png
用dmesg命令查看提示显示版本不对图片.png把编译好的tun.ko拷贝到/lib/,通过强制加载
图片.png
不行,最后
地址:https://blog.csdn.net/qq_34160841/article/details/104901266
最后,系统启动失败
e7774f3a61b0cd8d6561799741e8da3.jpg
绝了,搞不动了
第二天,完全按照https://blog.csdn.net/qq_34160841/article/details/104901266
成功