linux-socat 搭建 pwn 环境
[!tip]
socat 是一种多功能的网络工具,用于在两个地址之间传输数据。它支持多种传输机制,如 TCP、UDP、Unix 域套接字、文件等。socat 可以创建双向字节流,非常适用于调试、网络分析以及建立代理或端口转发配置。它能够建立加密连接、在系统间传输文件或设置虚拟网络接口,是网络管理员和安全研究者常用的工具。
安装 linux-socat
sudo apt-get install socat
利用 socat 命令来远程搭建 pwn 的环境
socat tcp-l:8887,fork exec:./pwn
- tcp-l:8887: 这部分告诉 socat 创建一个 TCP 监听器,监听在本地 8887 端口上。
- fork: 这告诉 socat 在接收到连接时创建一个新的进程来处理连接,而不是在同一个进程中处理所有连接。
- exec:./string: 这部分告诉 socat 在接收到连接时执行./string 可执行文件,并将连接的输入输出重定向到该程序。
[!note]
综合起来,这个命令的作用是创建一个 TCP 监听器,等待连接到达,然后将连接转发给 string 程序来处理。这个程序可能是一个漏洞模拟器或者一个需要远程访问的服务。
查看远端连接 ip,提供给做题者
192.168.115.128:8887
本地连接攻击
成功连接到
pwn_deploy_chroot 搭建 pwn 环境
[!tip]
环境准备
所有环境都在 python 2 和 pip 2 下准备
项目特点
- 一次可以部署多个题目到一个 docker 容器中
- 自动生成 flag, 并备份到当前目录
- 也是基于 xinted + docker + chroot
- 利用 python 脚本根据 pwn 的文件名自动化地生成 3 个文件:pwn. xinetd,Dockerfile 和 docker-compose. yml
- 在/bin 目录,利用自己编写的静态编译的 catflag 程序作为/bin/sh, 这样的话,system (“/bin/sh”) 实际执行的只是读取 flag 文件的内容,完全不给搅屎棍任何操作的余地
- 默认从 10000 端口监听,多一个程序就+1,起始的监听端口可以在 config. py 配置,或者生成 pwn. xinetd 和 docker-compose. yml 后自己修改这两个文件
安装 docker
# 安装docker
curl -s https://get.docker.com/ | sh
# 安装 docker-compose
apt install docker-compose
使用方法
将你要部署的 pwn 题目放到 bin 目录
我的项目已经将一个程序 copy 了 3 分作为示例,注意文件名不要含有特殊字符,文件名建议使用字母,下划线,横杆和数字,当然全字母的当然最好了
root@instance-1:~/pwn_deploy_chroot# ls bin/
pwn1 pwn1_copy1 pwn1_copy2
2、运行 initialize. py
运行脚本后会输出每个 pwn 的监听端口,
root@instance-1:~/pwn_deploy_chroot# python initialize.py
pwn1's port: 10000
pwn1_copy1's port: 10001
pwn1_copy2's port: 10002
文件与端口信息,还有随机生成的 flag 默认备份到 flags. txt
root@instance-1:~/pwn_deploy_chroot# cat flags.txt
pwn1: flag{93aa6da5-db45-46fa-a2e1-af2be6698692}
pwn1_copy1: flag{f9966c51-52e4-4212-ac44-97bf16620b41}
pwn1_copy2: flag{b17949ce-e3fa-4ca7-9fcc-44b8dc997cb3}
pwn1's port: 10000
pwn1_copy1's port: 10001
pwn1_copy2's port: 10002
启动环境
docker-compose up --build -d
检查环境
root@instance-1:~/pwn_deploy_chroot# netstat -antp | grep docker
tcp6 0 0 :::10002 :::* LISTEN 19828/docker-proxy
tcp6 0 0 :::10000 :::* LISTEN 19887/docker-proxy
tcp6 0 0 :::10001 :::* LISTEN 19873/docker-proxy
停止环境
docker-compose down
编辑 config. py 决定是否用我的 catflag 程序去替换/bin/sh
# Whether to replace /bin/sh
## 替换
REPLACE_BINSH = True
## 不替换(默认)
REPLACE_BINSH = False
项目注意
- flag 会由
initialize.py
生成,并写入 flags. txt中 - pwn 程序对应的端口信息也在 flags. txt 中
- 注意文件名不要含有特殊字符,文件名建议使用字母,下划线,横杆和数字,当然全字母的当然最好了
尝试解题
正常解题
Comments NOTHING