题目:
过程:
有waf,基本思路就想到过waf,危险函数传参
翻来覆去找到一个calc.php的页面
接收的参数为num,看到过滤规则首个就是过滤空格
构造如下:calc.php?空格num=phpinfo(); 这样,会先触发规则,删除空格,进而将一个名称为num的参数传入
成功
进一步读取目录,否则仍是找不到flag
由于过滤了“/”符号,我们用ASCII码替换
补充:scandir() 函数返回指定目录中的文件和目录的数组。
var_dump()函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值, 通过缩进显示其结构。
看到f1agg字符串,直接读取就好了。
payload如下:
总结:
题目比较简单,主要考察对于php字符串的解析特性
参考csdn沐目_Chen师傅的话就是:
我们知道PHP将查询字符串(在URL或正文中)转换为内部$_GET或的关联数组$_POST。例如:/?foo=bar变成Array([foo] => “bar”)。值得注意的是,查询字符串在解析的过程中会将某些字符删除或用下划线代替。例如,/?%20news[id%00=42会转换为Array([news_id] => 42)。如果一个IDS/IPS或WAF中有一条规则是当news_id参数的值是一个非数字的值则拦截,那么我们就可以用以下语句绕过:
/news.php?%20news[id%00=42"+AND+1=0–
上述PHP语句的参数%20news[id%00的值将存储到$_GET[“news_id”]中。