在Apple Silicon(ARM架构)上使用docker搭建Linux解题环境(含pwn)
前言
本人之前一直使用pd虚拟机,因为apple silicon是arm架构的导致我在虚拟机中为了搭建环境废了不少心思,结果还是没弄好.
便尝试使用docker(其实昨年就知道docker在mac上有预览版了,而当时也没mac就关注了一下,没想到我在Stack Overflow上居然看到了解决办法)
为什么我会想用docker呢?
在Stack Overflow上关于/lib64/ld-linux-x86-64.so.2: No such file or directory error这个问题的答案中,
我看到了这样一条
我就突然想起用docker可以pull一个x86的ubuntu的镜像.只需加上参数–platform linux/amd64
pwn大佬看这:
已知问题:
目前没法动调起来,所以我买了台x86的服务器.
本机配置

下载并安装docker
(✔)Docker Desktop for Apple silicon (预览版)
(✘)Install Docker Desktop on Mac
docker的安装和普通软件一样拖入即可完成安装,

在终端输入docker -v 就可以看到docker的版本了~
注意事项:
接下来打开程序点OK
输入密码后点安装
之后点同意接受.才算程序加载完成.
环境配置
pull镜像
这里我用的是ubuntu18.04基于x86的基础镜像,其中参数 --platform linux/amd64
必不可少
docker pull ubuntu:18.04 --platform linux/amd64

启动容器
接下来用以下命令来配置虚拟机基础环境并运行
1 | docker run -i -t -d --name=ubuntu-18.04 ubuntu:18.04 && docker exec -it ubuntu-18.04 /bin/bash |
使用uname -a
即可发现镜像正确运行在了x86架构上~

ubuntu环境配置
首先进行换源操作.
更换apt源
1 | apt-get update && cp /etc/apt/sources.list /etc/apt/sources.list.bak && \ |
换源建议参考:https://blog.csdn.net/xiangxianghehe/article/details/80112149
更换pip源
1 | apt-get install vim -y && \ |
然后在vim中粘入
1 | [global] |
按 :wq回车 (退出并保存)
顺便安装pwn工具
安装pwntools
1 | apt-get install python2.7 python-pip python-dev git libssl-dev libffi-dev build-essential -y |
这个过程等待较久.只要在跑就没问题.
安装pwndbg
1 | mkdir /software && cd /software && \ |
如果出现这个情况(在运行git clone命令时很容易出现这个情况):
这就说明下载的包太大,网速慢超时报错.由于git默认缓存大小不足导致的,使用下面的命令增加缓存大小。
解决方案:
方案一(推荐):
将https换成git或http,其实应该去检查一下换源是否成功
方案二:
1、查看git 配置:
- 查看当前配置命令: git config -l
2、httpBuffer加大
- 输入命令: git config –global http.postBuffer 524288000
- 此时我们再查看当前配置命令,发现http.postbuffer变成了524288000
3.修改配置文件
输入命令: vim ~/.bashrc
把以下三行命令添加到文件的最后:具体方法参考添加链接描述
export GIT_TRACE_PACKET=1
export GIT_TRACE=1
export GIT_CURL_VERBOSE=1
保存退出
安装peda
1 | git clone https://github.com/longld/peda.git ~/peda && \ |
32位libc环境
1 | apt install libc6-dev-i386 lib32z1 -y |
打包容器
至此,基本环境搭建完毕,我们将容器进行打包,先退出容器,使用docker ps
得到容器ID,然后使用commit命令进行打包docker commit -m "18.04" <容器id> lanyun/ubuntu
之后我们启动容器的方法是
1 | docker run -i -t --privileged -v /Users/lanyun/Downloads:/share lanyun/ubuntu bash |
注意,必须要使用 –privileged 参数否则我们无法调适,同时我们可以使用-v参数来挂在本地文件夹到容器中,实现共享,就不需要麻烦的进行复制操作来运行pwn文件了。 目前使用何种参数设置都无法进行调试
设置文件共享
之后直接进share目录里面就有我们共享的文件了
运行也正常(在之前arm架构下是无法运行的)