环境配置
安装docker 容器
1 | curl -s https://get.docker.com/ | sh |
安装 docker compose 和 git
1 | apt install docker-compose git |
下载
1 | git clone https://github.com/giantbranch/pwn_deploy_chroot.git |
使用
1.将所有 pwn 题目放入 bin 目录
注意文件名不要含有特殊字符,文件名建议使用字母,下划线,横杆和数字,因为会将文件名作为 linux 用户名
2.运行 initialize.py
运行脚本后会输出每个 pwn 的监听端口,文件与端口信息,还有随机生成的 flag 默认备份到 flags.txt
启动
1.在root权限下执行命令
1 | docker-compose up --build-d |
利用 initialize.py 脚本根据 pwn 的文件名自动化地生成 3 个文件:pwn.xinetd,Dockerfile 和 docker-compose.yml,之后便可以 docker 启动了
源程序编码
gcc编译
1.关闭DEP/NX(堆栈不可执行)
1 | gcc -z execstack -o 编译完的文件名 待编译的文件名 |
2.关掉Stack Protector/Canary(栈保护)
1 | gcc -fno-stack-protector -o 编译完的文件名 待编译的文件名 |
3.关掉程序ASLR/PIE(程序随机化保护)
1 | gcc -no-pie 编译完的文件名 待编译的文件名 |
4.关闭整个linux系统的ASLR保护
1 | sudo -s |
5.打开整个linux系统的ASLR保护
1 | sudo -s |
6.64位linux下面的GCC编译出一个32位可执行程序
1 | gcc -m32 -z execstack -fno-stack-protector -o 编译完的文件名 待编译的文件名 |
7.部署
1 | socat tcp-l:端口号,fork exec:程序位置,reuseaddr |
8.题目访问
1 | nc IP地址 端口号 |
Author: immerse
Link: http://example.com/2022/04/12/pwn%E6%97%A5%E8%AE%B0%E7%B0%BF-%E5%87%BA%E9%A2%98%E7%AF%87/
Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.