文档:https://www.qemu.org/docs/master/
Wiki: https://wiki.qemu.org/Main_Page
Qemu Mips文档:https://www.qemu.org/docs/master/system/target-mips.html
1. 安装
本文以mips小端版本为例:
sudo apt install qemu-system-mipsel -y
然后下载mips的内核和镜像:
内核文件 vmlinux-2.6.32-5-4kc-malta
磁盘镜像 debian_squeeze_mips_standard.qcow2
有两个地址:
- https://people.debian.org/~aurel32/qemu/mips/, 开发人员使用;
- http://ftp.debian.org/debian/dists/stable/main/installer-mipsel/current/images/malta/netboot/, debian的ftp,有临时根文件系统initd, 但没有提供磁盘镜像。
从第一个开发网站上下载即可。
启动虚拟机:
sudo qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" -nographic
登录root/root 。
2. 网络配置
宿主机安装网络依赖:
sudo apt-get install bridge-utils
sudo apt-get install uml-utilities
有一种修改/etc/network/interfaces 的方法,容易失败,推荐brctl的方法。
sudo brctl addbr br0
sudo ifconfig br0 192.168.122.1/24 up
sudo tunctl -t tap0
sudo ifconfig tap0 192.168.122.11/24 up
sudo brctl addif br0 tap0
启动虚拟机:
sudo qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" -nographic -netdev tap,id=tapnet,ifname=tap0,script=no -device rtl8139,netdev=tapnet
sudo qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" -net nic -net tap,ifname=tap0,script=no,downscript=no -nographic
ifconfig eth0 192.168.122.12/24 up
网络通了之后,就可以把文件拷进去了:
$ scp -r squashfs-root/ root@192.168.122.12:/root/
关于tap网卡
普通的网卡一端连接物理链路,一端连接内核协议栈。当数据通过物理链路进来后,到达内核协议栈做进一步的处理:
- 对于一些错误的数据包,协议栈可以选择丢弃;
- 对于不属于本机的数据包,协议栈可以选择转发;
- 对于属于本机的数据,协议栈就会通过Socket API告知上层正在等待的应用程序。
普通的物理网卡是通过物理链路来收发数据,而tun/tap 是通过/dev/net/tun来收发数据,一端连着/dev/net/tun,一端连着协议栈。
tap网卡主要是两部分组成:
- 字符设备驱动:把数据写入/dev/net/tun,然后通知用户进程从/dev/net/tun里面拿数据实现数据交互
- 虚拟网卡驱动:负责和网络协议栈的数据打交道
3. 其它使用方法
退出:ctrl+a, x。 不过配好网卡之后退出,居然就没法再启动了,,问题未解决。
4. 参考资料
mips-pwn环境搭建 | e3pem’s Blog
从一道mips题目学习搭建mips环境及ROP - 云+社区 - 腾讯云 (tencent.com)
mips-pwn环境搭建 | e3pem’s Blog
|