好靶场出题——静态网站怎么打
前言
第一次出题,按照平台要求存放 flag 位置的话发现是有三个非预期解的
一个是直接任意文件读取到了固定的 flag 位置,另一个则是传 phpinfo() 读取环境变量,另一个则是执行读取文件内容函数
主要是平台把 flag 位置直接给出来了,让大家没想到其实这关没这么简单

任意文件读取
page(双写绕过 + %00 截断)
提示是静态网站,看了一圈确实没有给任何交互点,但是发现 ?page 一直在变化

推测使用的文件包含函数,且没有后缀 .php,所以应该是后端会自动拼接后缀 .php
先尝试读取 /etc/passwd 文件,使用 %00 截断无果

再加上双写绕过成功读取到文件,并且给出了账号密码

弱口令
login
使用读取到的账号密码登录后台

路径穿越
ZIP
在后台找到一个上传点,但是只能上传 ZIP 压缩文件,很明显考察的是压缩包的路径穿越漏洞

我们可以将一个文件命名为 ../shell.php,这样当后台自动解压缩时会将其放在上一级目录下
使用 Python 脚本实现
1 | import zipfile |
但是上传时发现后台有 WAF,识别了文件内容

RCE
免杀 WebShell
这里需要免杀一下,最简单的方法就是将一句话木马写入另一个文件当中
1 | import zipfile |
上传成功

先访问 payload.php 创建 shell.php

然后使用蚁剑连接

拿到 flag
