去年的 roarCTF 比赛
质量很高
进去一看
以为和 渗透不沾边 是那种跑反应的
check sourch
find something interestring
发现源码
代码审计
其实就是命令 执行加了waf
一开始 我以为直接就是 蚁剑连接 但是这里有个echo 想要注释掉 但是没有办法 后来 查了 资料 才了解 php特性 用; 可以分开执行语句
构造 1;phpinfo();
可结果 。。
因为不清楚 一些php特性 做不下去了
大佬的理解
主要是 字符串解析 漏洞 后台waf 可能对 查询的字符串 做了判断 如果查到了 num 就 返回禁止访问
如果有下划线 可用 [ 代替
php 解析时 会把空格和%00去掉 但是waf会先进行检测 检测不到num 其实就已经绕过了waf
知道了 这个知识点 才能继续不然 一切白干
但是 查看了phpinfo后
过滤了 很多函数 主要是 系统函数 这样 我们就很难getshell 而且还过滤了很多冷门函数 但是放出了 打印函数 var_dump 相当于 C的printf
翻出了 目录搜索函数 scandir
查看了 源码 是过滤了 /
但是我们如果要查根目录 需要用 var_dump(scandir(/)) 打印 找到的目录
发现 页面返回错误
因为把 / 过滤了
而且 必须 var_dump
直接scandir 不行
必须实用 var_dump(scandir(chr(47)))
找到 f1agg
打开 f1agg即可
https://www.runoob.com/php/func-string-chr.html chr函数用法
之后就是想办法 打开 了
不能直接 var_dump 因为 这个 f1agg不是代码
还需要用到 file_get_contents
该函数可以将文件内容转换为代码流 实用 var_dump 可以打印出来
构造payload ? num=1;var_dump(file_get_contents(/f1agg))
将 /f1agg转换成 chr函数表示
将每个字符 用 . 拼接 而不是像C或Py 一样用+
PHP特性!!。。 没怎么学
构造好 ? num%00=1;var_dump(file_get_contents(/f1agg))
致死点 : php 字符串解析漏洞 命令执行漏洞 结合