最近有点忙,没什么时间和心思学堆了,就先利用零碎时间搭建了一个docker上的pwn环境。其实以前就想搭建一个docker环境,但是那时候想用dockfile来一步到位,奈何自身水平原因,反而花了很多时间,然后就放弃了。现在我直接用Dockerfile拉一个基础的ubuntu镜像,然后在容器里一个一个安装工具。
1) 拉取镜像到本地
2) 查看全部本地镜像
3) 删除本地的镜像
4) 镜像的导入导出
5) 修改镜像的名称
1) 运行容器
2) 查看正在运行的容器
3) 进入到容器的内部
4) 停止和删除容器(删除容器前,需要先停止容器)
5) 启动容器
6) 从容器创建一个新的镜像
apt update 可能会失败,多试几次。
不停止运行退出:先按 ctrl+p
,然后按 ctrl+q
。
pwndgb: https://github.com/pwndbg/pwndbg
期间会安装python库,可能因为源和网络的原因会安装失败,这时候有两个选择:
这里我就不安装peda了,因为peda-heap是在peda的基础上添加了一些调试堆的命令。
而且peda的安装过程也和peda-heap基本一样。
peda: https://github.com/longld/peda
peda-heap:https://github.com/Mipu94/peda-heap
图中还有dbg的影子,如果不想要的话,那么可以注释掉~/.gdbinit(这里也就是/root/.gdbinit)里关于pwndbg的那一行。
我在docker里安装gef失败,暂时没找到原因,但是我在虚拟机里是安装成功的。
PS:gef我用得少,就没管了。如果有哪位大佬知道为啥,请告诉我。
1) 安装wget
2) 安装gef
我安装 pwngdb 主要也是为了调试堆。
安装完成后,修改~/.gdbinit里面的内容
pwntools:https://github.com/Gallopsled/pwntools
但是shellcraft使用报错:语法错误。初步猜测问题出在Pygments这个库,可能版本过高或者过低?
pip list 查看到Pygments的版本是2.7.3,然后故意写错安装命令查看Pygments有哪些版本,发现提供的最高是2.5.2,安装2.5.2版本后发现使用shellcraft成功。
最后打包:
需要的同学可以去百度云自取:链接: https://pan.baidu.com/s/1HpyYVtwBrR-7ty1BMMa1eg 密码: uh6s
docker pull 镜像名称[:tag]
docker pull ubuntu:
16.04
docker pull 镜像名称[:tag]
docker pull ubuntu:
16.04
docker images
docker rmi 镜像的标识(
id
或者镜像名称:tag)
docker rmi 镜像的标识(
id
或者镜像名称:tag)
docker save
-
o 导出的路径 镜像
id
/
镜像名称:tag
docker save
-
o .
/
ubuntu.image ubuntu:
16.04
docker load
-
i 镜像文件
docker load
-
i ubuntu.image
docker save
-
o 导出的路径 镜像
id
/
镜像名称:tag
docker save
-
o .
/
ubuntu.image ubuntu:
16.04
docker load
-
i 镜像文件
docker load
-
i ubuntu.image
docker tag 镜像
id
新镜像名称:版本(tag)
docker tag 镜像
id
新镜像名称:版本(tag)
docker run 镜像的标识|镜像名称[:tag]
docker run
-
d
-
p 宿主机端口:容器端口
-
-
name 容器名称 镜像的标识:镜像名称[:tag]
docker run 镜像的标识|镜像名称[:tag]
docker run
-
d
-
p 宿主机端口:容器端口
-
-
name 容器名称 镜像的标识:镜像名称[:tag]
docker ps [
-
qa]
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 commit [OPTIONS] 容器标识 [镜像名称[:TAG]]
docker commit [OPTIONS] 容器标识 [镜像名称[:TAG]]
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
cd pwndbg
.
/
setup.sh
git clone https:
/
/
hub.fastgit.org
/
pwndbg
/
pwndbg.git
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
wget
-
q
-
O
-
https:
/
/
github.com
/
hugsy
/
gef
/
raw
/
master
/
gef.sh | sh
wget
-
q
-
O ~
/
.gdbinit
-
gef.py https:
/
/
github.com
/
hugsy
/
gef
/
raw
/
master
/
gef.py
echo source ~
/
.gdbinit
-
gef.py >> ~
/
.gdbinit
wget
-
q
-
O
-
https:
/
/
github.com
/
hugsy
/
gef
/
raw
/
master
/
gef.sh | sh
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:
/
/
gitclone.com
/
github.com
/
lieanu
/
LibcSearcher.git
cd LibcSearcher
python setup.py develop
git clone https:
/
/
gitclone.com
/
github.com
/
lieanu
/
LibcSearcher.git
cd LibcSearcher
[注意]APP应用上架合规检测服务,协助应用顺利上架!