最近有点忙,没什么时间和心思学堆了,就先利用零碎时间搭建了一个docker上的pwn环境。其实以前就想搭建一个docker环境,但是那时候想用dockfile来一步到位,奈何自身水平原因,反而花了很多时间,然后就放弃了。现在我直接用Dockerfile拉一个基础的ubuntu镜像,然后在容器里一个一个安装工具。
1) 拉取镜像到本地
docker pull 镜像名称[:tag]
# e.g
docker pull ubuntu:
16.04
2) 查看全部本地镜像
docker images
3) 删除本地的镜像
docker rmi 镜像的标识(
id
或者镜像名称:tag)
4) 镜像的导入导出
### 将本地的镜像导出
docker save
-
o 导出的路径 镜像
/
镜像名称:tag
#e.g.
o .
ubuntu.image ubuntu:
### 加载本地的镜像文件
docker load
i 镜像文件
# e.g.
i ubuntu.image
5) 修改镜像的名称
docker tag 镜像
新镜像名称:版本(tag)
1) 运行容器
# 简单操作
docker run 镜像的标识|镜像名称[:tag]
# 常用的参数
docker run
d
p 宿主机端口:容器端口
name 容器名称 镜像的标识:镜像名称[:tag]
# -d:代表后台运行容器
# -p 宿主机端口:容器端口 :为了映射当前主机的端口和容器的端口
# --name:容器名称;指定容器的名称
2) 查看正在运行的容器
docker ps [
qa]
# -a:查看全部的容器,包括没有运行
# -q:只查看容器的标识
3) 进入到容器的内部
docker
exec
it 容器
bash
4) 停止和删除容器(删除容器前,需要先停止容器)
# 停止指定容器
docker stop 容器
# 停止全部容器
docker stop $(docker ps
qa)
# 删除指定容器
docker rm 容器
# 删除全部容器
docker rm $(docker ps
5) 启动容器
docker start 容器
6) 从容器创建一个新的镜像
docker commit [OPTIONS] 容器标识 [镜像名称[:TAG]]
# OPTIONS:
# -a :提交的镜像作者;
# -c :使用Dockerfile指令来创建镜像;
# -m :提交时的说明文字;
# -p :在commit时,将容器暂停。
FROM ubuntu:
RUN sed
i s@
archive.ubuntu.com
@
mirrors.aliyun.com
@g
etc
apt
sources.
list
RUN apt
get clean
get update
get install \
python python3 \
python
pip python3
pip \
dev libffi
dev libssl
dev \
vim \
lib32ncurses5 lib32z1 \
ruby gem git \
y
lib32ncurses5 和 lib32z1 是32位库,是为了能够运行32位程序 ruby和gem是为了后面安装one_gadget
docker build
t pwn:latest .
apt update 可能会失败,多试几次。
it
name pwn
v xxx
challenges:
opt
challenges pwn:latest
不停止运行退出:先按 ctrl+p ,然后按 ctrl+q。
ctrl+p
ctrl+q
pwndgb: 79bK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6H3N6$3&6V1j5X3N6Q4x3V1k6H3N6$3&6V1j5X3M7`.
git clone https:
github.com
pwndbg
cd pwndbg
.
setup.sh
hub.fastgit.org
pwndbg.git
# 高速下载油猴脚本:6c6K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6*7K9s2g2S2L8X3I4S2L8W2)9J5k6i4A6Z5K9h3S2#2i4K6u0W2j5$3!0E0i4K6u0r3M7q4)9J5c8U0t1$3x3U0V1H3y4e0j5H3x3H3`.`.
期间会安装python库,可能因为源和网络的原因会安装失败,这时候有两个选择: 重试./setup.sh 哪个python库因为网络原因安装失败,那就自己指定源,先用pip3安装它。
期间会安装python库,可能因为源和网络的原因会安装失败,这时候有两个选择:
这里我就不安装peda了,因为peda-heap是在peda的基础上添加了一些调试堆的命令。 而且peda的安装过程也和peda-heap基本一样。 peda: b07K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6D9L8$3&6Y4L8r3c8Q4x3V1k6H3k6h3c8S2 peda-heap:0f4K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6y4K9i4m8#2z5e0c8Q4x3V1k6H3k6h3c8S2i4K6u0V1K9r3g2S2M7l9`.`.
这里我就不安装peda了,因为peda-heap是在peda的基础上添加了一些调试堆的命令。
而且peda的安装过程也和peda-heap基本一样。
peda: b07K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6D9L8$3&6Y4L8r3c8Q4x3V1k6H3k6h3c8S2
peda-heap:0f4K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6y4K9i4m8#2z5e0c8Q4x3V1k6H3k6h3c8S2i4K6u0V1K9r3g2S2M7l9`.`.
git clone git:
Mipu94
peda
heap.git ~
heap
echo
"source ~/peda-heap/peda.py"
>> ~
.gdbinit
heap.git
"source /opt/tools/peda-heap/peda.py"
图中还有dbg的影子,如果不想要的话,那么可以注释掉~/.gdbinit(这里也就是/root/.gdbinit)里关于pwndbg的那一行。
我在docker里安装gef失败,暂时没找到原因,但是我在虚拟机里是安装成功的。 PS:gef我用得少,就没管了。如果有哪位大佬知道为啥,请告诉我。
我在docker里安装gef失败,暂时没找到原因,但是我在虚拟机里是安装成功的。
PS:gef我用得少,就没管了。如果有哪位大佬知道为啥,请告诉我。
1) 安装wget
apt install wget
[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!