pwn_waf使用教程

下载与设置

首先将其源码下载下来或者git clone下来到本地pwn_waf

需要修改的地方是makefile文件,我们要修改日志存放的位置,这边推荐的位置就是在pwn题目的目录下创建一个隐藏文件夹(以点.开头的文件夹名称)。也是为了避免和下面注意一样的坑。

注意:这里的LOG_PATH路径设置有个坑,这里的路径设置跟xinetd配置文件设计的方式有关

service ctf
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
type = UNLISTED
port = 9999
bind = 0.0.0.0
server = /usr/sbin/chroot
server_args = –userspec=1000:1000 /home/ctf ./pwn
banner_fail = /etc/banner_fail
per_source = 10
rlimit_cpu = 20
}

如果配置文件与上述类似,这种就是通过/usr/sbin/chroot启动,将文件活动的根进行了一个更改,上述就是默认的初始路径为/home/ctf,且只能操作该目录下的文件(不要企图用../,这个玩意不行!不行!),所以在配置路径时,要以/home/ctf拼接进行配置,假设LOG_PATH=/home/ctf/.pwn_waf,则最后日志写入的文件位置为/home/ctf/home/ctf/.pwn_waf,然后又由于没有创建该文件,导致最后nc连接时回出现Open log [/tmp/.waf/13_57_07_36de8.log] file failed!错误

个人发疯:就是这个破问题,浪费了差不多三天的时间,最后突然悟了想着试试,顶不住了(希望不会有人也是因为这个问题浪费时间)

编译与利用

编译流量监听的程序,这里只编译流量监听部分。如果有需要拦截转发等功能的可以在自行编译,这个流量窃听在我看来是比较有用的。

1
make catch

然后就会在项目当前的文件夹下得到一个catch文件,这个文件会实现流量监听功能,同时还会保证原pwn题服务;

对于这个保证原pwn题服务是怎么实现的呢,经过最后方法实现的猜测:(原pwn文件要放到日志目录下,并改名为pwn

首先是这个catch文件监听nc连接,然后将连接的数据转发到原pwn程序,得到返回值返回到连接的用户中

然后我们将该catch文件传到部署pwn题的服务器上(哪个目录下都行不碍事,可以的话就先放在待会写日志的那个文件夹下),先保存下来原来的pwn题目文件(可以放到本机上,放置后面因为误删导致各种问题);

1
2
3
4
5
chmod +x catch	# 赋予catch可执行权限
mkdir /home/ctf/.pwn-waf # 创建放置日志文件夹
# chmod 777 /home/ctf/.pwn-waf # 能给777最好,不能给777可以尝试更改文件夹的归属到部署pwn题目的用户(两者必须要能实现其一才行)
chown ctf:ctf .pwn-waf/ # 假设部署pwn题目的用户为ctf
cp /home/ctf/orange_cat_diary /home/ctf/.pwn-waf # 保存源pwn题程序备份

然后我们用catch文件来替代原来部署的pwn题目,并改名为原来的pwn题目程序的程序名称

1
cp /home/ctf/.pwn-waf/catch /home/ctf/orange_cat_diary	#修改源pwn题目

然后再在存放日志的文件夹中,复制一份源pwn题程序并改名为pwn(这是为了让catch能找到原来的pwn题目)

1
2
cp /home/ctf/.pwn-waf/orange_cat_diary /home/ctf/.pwn-waf/pwn
chown ctf:ctf /home/ctf/.pwn-waf/pwn # 能给777最好,不能给777可以尝试更改文件夹的归属到部署pwn题目的用户(两者必须要能实现其一才行)

至此,其实工作就已经完成了。

其实到这里还不算完全结束,对于像上述注意事项的那种pwn题目部署方式,在本地进行测试时,还需要创建一个文件夹,即LOG_PATH对应路径的文件夹,因为在服务器的本地,根路径还是根路径,只有通过nc连接的时候根路径才会修改为/home/ctf,所以我们还要创建一个文件夹,并将程序的源文件复制到相应的文件夹并改名为pwn才行。

去测试一下新pwn程序(catch改名的那个程序能不能运行),成功运行后,打开日志填写文件夹看看有没有记录流量。

如果以上都成功了,接下来才是重头戏,nc连接测试,只要相应文件夹有日志就成功了。


pwn_waf使用教程
http://candyb0x.github.io/2024/06/02/pwn-waf使用教程/
作者
Candy
发布于
2024年6月2日
更新于
2024年6月2日
许可协议