安装
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
|
工具安装
1
| $ pip2 install -i https:
|
后面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
删除
指定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()
|