安装

docker安装

1
2
3
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
$ sudo usermod -aG docker username

pwndocker安装

1
$ docker pull skysider/pwndocker

工具安装

pwntools

1
$ pip2 install -i https://pypi.tuna.tsinghua.edu.cn/simple pwntools

后面gdb.attach()有点问题,还是先用python3吧

镜像管理

保存镜像

1
$ docker commit docker_id mydocker

删除镜像

1
$ docker rmi -f mydocker

容器管理

运行

1
$ docker run -d --privileged skysider/pwndocker

即可后台运行(–privileged表示特权级运行,不加gdb会没有权限)

第二次直接查看id后运行:

1
2
$ docker ps -a
$ docker start docker_id

进入容器

1
$ docker exec -it docker_id /bin/sh

即可进入docker的shell

停止docker

1
$ docker stop docker_id

删除

1
$ docker rm docker_id

指定libc

首先写个shell脚本实现自动化

1
2
3
4
5
6
7
8
9
id=***
docker cp ./1.py ${id}:/tmp
docker cp ./elf ${id}:/tmp
docker exec -it ${id} chmod 777 /tmp/elf
docker exec -it ${id} chmod 777 /tmp/1.py
docker exec -it ${id} cp /glibc/2.29/64/lib/ld-2.29.so /tmp
docker exec -it ${id} cp /glibc/2.29/64/lib/libc.so.6 /tmp
docker exec -it ${id} patchelf --set-interpreter /tmp/ld-2.29.so /tmp/elf
docker exec -it ${id} tmux

具体功能就是将elf和python文件cp到docker上,然后给予权限,再将libc和ld(这里用2.29版本)移到/tmp下,再用patchelf –set-interpreter修改elf的ld文件,然后进入tmux。这里还需要在手动运行python脚本(这里不会自动化,希望有大佬能帮忙下)。

然后就是python脚本中指定libc执行:

1
2
3
4
from pwn import *
p = process("/tmp/elf", env={"LD_PRELOAD":"/tmp/libc.so.6"})
context.terminal = ['tmux','splitw','-h']
p.interactive()