首页
社区
课程
招聘
[原创]Docker搭建pwn环境
发表于: 2020-12-23 03:11 22535

[原创]Docker搭建pwn环境

2020-12-23 03:11
22535

最近有点忙,没什么时间和心思学堆了,就先利用零碎时间搭建了一个docker上的pwn环境。其实以前就想搭建一个docker环境,但是那时候想用dockfile来一步到位,奈何自身水平原因,反而花了很多时间,然后就放弃了。现在我直接用Dockerfile拉一个基础的ubuntu镜像,然后在容器里一个一个安装工具。

1) 拉取镜像到本地

2) 查看全部本地镜像

3) 删除本地的镜像

4) 镜像的导入导出

5) 修改镜像的名称

1) 运行容器

2) 查看正在运行的容器

3) 进入到容器的内部

4) 停止和删除容器(删除容器前,需要先停止容器)

5) 启动容器

6) 从容器创建一个新的镜像

image-20201222231422961

apt update 可能会失败,多试几次。

不停止运行退出:先按 ctrl+p ,然后按 ctrl+q

image-20201223001610054

image-20201223001742858

pwndgb: https://github.com/pwndbg/pwndbg

image-20201223005215043

期间会安装python库,可能因为源和网络的原因会安装失败,这时候有两个选择:

这里我就不安装peda了,因为peda-heap是在peda的基础上添加了一些调试堆的命令。

而且peda的安装过程也和peda-heap基本一样。

peda: https://github.com/longld/peda

peda-heap:https://github.com/Mipu94/peda-heap

image-20201223005859989

图中还有dbg的影子,如果不想要的话,那么可以注释掉~/.gdbinit(这里也就是/root/.gdbinit)里关于pwndbg的那一行。

我在docker里安装gef失败,暂时没找到原因,但是我在虚拟机里是安装成功的。

PS:gef我用得少,就没管了。如果有哪位大佬知道为啥,请告诉我。

1) 安装wget

2) 安装gef

我安装 pwngdb 主要也是为了调试堆。

安装完成后,修改~/.gdbinit里面的内容
image-20201223012816413

image-20201223012749737

image-20201223013821499

pwntools:https://github.com/Gallopsled/pwntools

image-20201223015427942

但是shellcraft使用报错:语法错误。初步猜测问题出在Pygments这个库,可能版本过高或者过低?

image-20201223015557536

pip list 查看到Pygments的版本是2.7.3,然后故意写错安装命令查看Pygments有哪些版本,发现提供的最高是2.5.2,安装2.5.2版本后发现使用shellcraft成功。

image-20201223020716641

image-20201223021035885

image-20201223022100675

image-20201223022513545

image-20201223022815773

image-20201223023216246

image-20201223023631028

image-20201223024420491

最后打包:

image-20201223024833656

需要的同学可以去百度云自取:链接: https://pan.baidu.com/s/1HpyYVtwBrR-7ty1BMMa1eg 密码: uh6s

docker pull 镜像名称[:tag]
# e.g
docker pull ubuntu:16.04
docker pull 镜像名称[:tag]
# e.g
docker pull ubuntu:16.04
docker images
docker images
docker rmi 镜像的标识(id或者镜像名称:tag)
docker rmi 镜像的标识(id或者镜像名称:tag)
### 将本地的镜像导出
docker save -o 导出的路径 镜像id/镜像名称:tag
#e.g.
docker save -o ./ubuntu.image ubuntu:16.04
 
### 加载本地的镜像文件
docker load -i 镜像文件
# e.g.
docker load -i ubuntu.image
### 将本地的镜像导出
docker save -o 导出的路径 镜像id/镜像名称:tag
#e.g.
docker save -o ./ubuntu.image ubuntu:16.04
 
### 加载本地的镜像文件
docker load -i 镜像文件
# e.g.
docker load -i ubuntu.image
docker tag 镜像id 新镜像名称:版本(tag)
docker tag 镜像id 新镜像名称:版本(tag)
# 简单操作
docker run 镜像的标识|镜像名称[:tag]
 
# 常用的参数
docker run -d -p 宿主机端口:容器端口 --name 容器名称 镜像的标识:镜像名称[:tag]
# -d:代表后台运行容器
# -p 宿主机端口:容器端口 :为了映射当前主机的端口和容器的端口
# --name:容器名称;指定容器的名称
# 简单操作
docker run 镜像的标识|镜像名称[:tag]
 
# 常用的参数
docker run -d -p 宿主机端口:容器端口 --name 容器名称 镜像的标识:镜像名称[:tag]
# -d:代表后台运行容器
# -p 宿主机端口:容器端口 :为了映射当前主机的端口和容器的端口
# --name:容器名称;指定容器的名称
docker ps [-qa]
# -a:查看全部的容器,包括没有运行
# -q:只查看容器的标识
docker ps [-qa]
# -a:查看全部的容器,包括没有运行
# -q:只查看容器的标识
docker exec -it 容器id bash
docker exec -it 容器id bash
# 停止指定容器
docker stop 容器id
# 停止全部容器
docker stop $(docker ps -qa)
 
# 删除指定容器
docker rm 容器id
# 删除全部容器
docker rm $(docker ps -qa)
# 停止指定容器
docker stop 容器id
# 停止全部容器
docker stop $(docker ps -qa)
 
# 删除指定容器
docker rm 容器id
# 删除全部容器
docker rm $(docker ps -qa)
docker start 容器id
docker start 容器id
docker commit [OPTIONS] 容器标识 [镜像名称[:TAG]]
 
# OPTIONS:
# -a :提交的镜像作者;
# -c :使用Dockerfile指令来创建镜像;
# -m :提交时的说明文字;
# -p :在commit时,将容器暂停。
docker commit [OPTIONS] 容器标识 [镜像名称[:TAG]]
 
# OPTIONS:
# -a :提交的镜像作者;
# -c :使用Dockerfile指令来创建镜像;
# -m :提交时的说明文字;
# -p :在commit时,将容器暂停。
FROM ubuntu:16.04
RUN  sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN  apt-get clean
RUN apt-get update
RUN apt-get install \
        python python3 \
        python-pip python3-pip \
        python-dev libffi-dev libssl-dev \
        vim \
        lib32ncurses5 lib32z1 \
        ruby gem git \
         -y
FROM ubuntu:16.04
RUN  sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN  apt-get clean
RUN apt-get update
RUN apt-get install \
        python python3 \
        python-pip python3-pip \
        python-dev libffi-dev libssl-dev \
        vim \
        lib32ncurses5 lib32z1 \
        ruby gem git \
         -y
docker build -t pwn:latest .
docker build -t pwn:latest .
docker run -it --name pwn -v xxx/challenges:/opt/challenges pwn:latest
docker run -it --name pwn -v xxx/challenges:/opt/challenges pwn:latest
 
git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh
git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh
git clone https://hub.fastgit.org/pwndbg/pwndbg.git # 高速下载油猴脚本:https://zhuanlan.zhihu.com/p/262905603
cd pwndbg
./setup.sh
git clone https://hub.fastgit.org/pwndbg/pwndbg.git # 高速下载油猴脚本:https://zhuanlan.zhihu.com/p/262905603
cd pwndbg
./setup.sh
git clone git://github.com/Mipu94/peda-heap.git ~/peda-heap
echo "source ~/peda-heap/peda.py" >> ~/.gdbinit
git clone git://github.com/Mipu94/peda-heap.git ~/peda-heap
echo "source ~/peda-heap/peda.py" >> ~/.gdbinit
git clone https://hub.fastgit.org/Mipu94/peda-heap.git
echo "source /opt/tools/peda-heap/peda.py" >> ~/.gdbinit
git clone https://hub.fastgit.org/Mipu94/peda-heap.git
echo "source /opt/tools/peda-heap/peda.py" >> ~/.gdbinit
 
apt install wget
apt install wget
#下载 `gef.sh` 并执行
wget -q -O- https://github.com/hugsy/gef/raw/master/gef.sh | sh
 
# 下载 `gef.py`, 并将其 `source` 写入 `.gdbinit`
wget -q -O ~/.gdbinit-gef.py https://github.com/hugsy/gef/raw/master/gef.py
echo source ~/.gdbinit-gef.py >> ~/.gdbinit
#下载 `gef.sh` 并执行
wget -q -O- https://github.com/hugsy/gef/raw/master/gef.sh | sh
 
# 下载 `gef.py`, 并将其 `source` 写入 `.gdbinit`
wget -q -O ~/.gdbinit-gef.py https://github.com/hugsy/gef/raw/master/gef.py
echo source ~/.gdbinit-gef.py >> ~/.gdbinit
git clone https://github.com/scwuaptx/Pwngdb.git
cp Pwngdb/.gdbinit ~/
git clone https://github.com/scwuaptx/Pwngdb.git
cp Pwngdb/.gdbinit ~/
 
pwndbg:
    echo "source /opt/tools/pwndbg/gdbinit.py" > ~/.gdbinit
 
peda-heap:
    echo "source /opt/tools/peda-heap/peda.py" > ~/.gdbinit
 
gef:
    echo "source ~/.gdbinit-gef.py" > ~/.gdbinit
pwndbg:
    echo "source /opt/tools/pwndbg/gdbinit.py" > ~/.gdbinit
 
peda-heap:
    echo "source /opt/tools/peda-heap/peda.py" > ~/.gdbinit
 
gef:
    echo "source ~/.gdbinit-gef.py" > ~/.gdbinit
# git clone https://github.com/lieanu/LibcSearcher.git 官方
git clone https://gitclone.com/github.com/lieanu/LibcSearcher.git # 加速
cd LibcSearcher
python setup.py develop
# git clone https://github.com/lieanu/LibcSearcher.git 官方
git clone https://gitclone.com/github.com/lieanu/LibcSearcher.git # 加速
cd LibcSearcher

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 6
支持
分享
最新回复 (3)
雪    币:
活跃值: (154)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
6666
2021-7-26 08:56
0
雪    币: 225
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
博主 docker搭建的18环境 报错:free(): double free detected in tcache 2 ,为什么啊
2021-9-9 13:22
0
雪    币: 164
活跃值: (1034)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
大佬,链接的密码不对啊
2023-12-28 09:14
0
游客
登录 | 注册 方可回帖
返回
//