惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
云风的 BLOG
云风的 BLOG
大猫的无限游戏
大猫的无限游戏
M
MIT News - Artificial intelligence
L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Recent Announcements
Recent Announcements
IT之家
IT之家
Google DeepMind News
Google DeepMind News
罗磊的独立博客
爱范儿
爱范儿
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
U
Unit 42
MongoDB | Blog
MongoDB | Blog
S
SegmentFault 最新的问题
B
Blog
博客园 - 叶小钗
月光博客
月光博客
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
C
Check Point Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

LanYunのBlog

优化macOS Dock栏的显示与隐藏 解决macOS全屏模式下某些情况显示原始鼠标指针的问题 Yarn从Classic迁移到Modern nginx自编译 用santa对二进制进行监控和授权 ESXI 8.0安装黑群晖DSM 7.x openwrt编译过程记录 编译monero For macOS ARM 自建busuanzi不蒜子平台统计平台 浅记博客更新日志 (机翻)Kubo配置文件 修改brew services中服务的启动参数 技术杂记📝 解决Surge模块不能同步问题 为Arch Linux配置邮件服务 自编译NutClient-ESXI,更改邮件逻辑 解决ESXI和群晖使用SSH密钥登录问题 为J4125软路由ESXI中群晖提供UPS服务 在arch linux上搭建rustdesk server 解决虚拟机扩容中GPT PMBR大小不符问题 搭建Tuic V5 优雅地为macOS提供python多版本的支持 修复root路径下文件权限问题 解决macOS 14上利用Whisky运行steam时有关问题 在macOS中用PhpStorm配置Xdebug调试 利用CloudFlare Workers快速自建一个IP获取器 如何自动续期证书? 从0开始速配VPS用于网站等 搭建一个基于ChatGPT的QQ机器人(Yunzai-Bot) For Mac 010 Editor For Mac 13.0.1 Crack 破解
在Apple Silicon(ARM架构)上使用docker搭建Linux解题环境(含pwn)
LanYun · 2021-12-18 · via LanYunのBlog

前言


本人之前一直使用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这个问题的答案中,

我看到了这样一条image-20211218192913322

我就突然想起用docker可以pull一个x86的ubuntu的镜像.只需加上参数–platform linux/amd64

pwn大佬看这:最终配置完成后gdb调试是无法进行的,猜测是docker基于qemu虚拟化的问题,以什么权限运行都无法进行gdb调试,只能说作为临时救急用

已知问题:

目前没法动调起来,所以我买了台x86的服务器.

问题参考:

https://github.com/docker/for-mac/issues/5191

https://stackoverflow.com/questions/68435791/warning-ptrace-function-not-implemented-during-startup-program-exited-with-cod

https://stackoverflow.com/questions/20590155/how-to-single-step-arm-assembly-in-gdb-on-qemu/28241508#28241508

本机配置


image-20211218193431944

(✔)Docker Desktop for Apple silicon (预览版)

(✘)Install Docker Desktop on Mac

docker的安装和普通软件一样拖入即可完成安装,

image-20211218200639178

在终端输入docker -v 就可以看到docker的版本了~

注意事项:

接下来打开程序Snipaste_2021-12-18_20-10-24点OKimage-20211218201128125输入密码后点安装

之后点同意接受.才算程序加载完成.

环境配置


pull镜像

这里我用的是ubuntu18.04基于x86的基础镜像,其中参数 --platform linux/amd64 必不可少

docker pull ubuntu:18.04 --platform linux/amd64

image-20211218201728110

启动容器

接下来用以下命令来配置虚拟机基础环境并运行

1
docker run -i -t -d --name=ubuntu-18.04 ubuntu:18.04 && docker exec -it ubuntu-18.04 /bin/bash

使用uname -a即可发现镜像正确运行在了x86架构上~

image-20211218202100797

ubuntu环境配置

首先进行换源操作.

更换apt源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
apt-get update &&  cp /etc/apt/sources.list /etc/apt/sources.list.bak && \
apt-get install apt-transport-https ca-certificates -y && \
echo ' # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释.
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

# 预发布软件源,不建议启用,需要自取.
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse ' > /etc/apt/sources.list &&\
apt-get update

换源建议参考:https://blog.csdn.net/xiangxianghehe/article/details/80112149

更换pip源

1
2
3
apt-get install vim -y && \
mkdir ~/.pip && \
vim ~/.pip/pip.conf

然后在vim中粘入

1
2
3
4
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
[install]
trusted-host = pypi.tuna.tsinghua.edu.cn

:wq回车 (退出并保存)

顺便安装pwn工具

安装pwntools

1
2
apt-get install python2.7 python-pip python-dev git libssl-dev libffi-dev build-essential -y 
pip install pwntools

这个过程等待较久.只要在跑就没问题.

安装pwndbg

1
2
mkdir /software && cd /software && \
git clone https://github.com/pwndbg/pwndbg && cd pwndbg && ./setup.sh

如果出现这个情况(在运行git clone命令时很容易出现这个情况):image-20211218221532248

这就说明下载的包太大,网速慢超时报错.由于git默认缓存大小不足导致的,使用下面的命令增加缓存大小。

解决方案:
方案一(推荐):

image-20211218221956018将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
2
git clone https://github.com/longld/peda.git ~/peda && \
echo "source ~/peda/peda.py" >> ~/.gdbinit

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文件了。 目前使用何种参数设置都无法进行调试

设置文件共享

image-20211218221356711

之后直接进share目录里面就有我们共享的文件了

运行也正常(在之前arm架构下是无法运行的)image-20211218232139059


拓展

Docker - 实现本地镜像的导出、导入(export、import、save、load)

在Apple Silicon(ARM架构)上使用docker搭建Linux解题环境(含pwn)