声明由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。No.1语法定义注释查询字符串解析到变量,首先看一下parse_str()函数:语法:parse_str(string,array)定义和用法:parse_str()函数把查询字符串解析到变量中。注释:如果未设置array参数,则由该函数设置的变量将覆盖已存在的同名变量。注释:php.ini文件中的magic_quotes_gpc设置影响该函数的输出。如果已启用,那么在parse_str()解析之前,变量会被addslashes()转换。No.2如何绕过waf程序规则TL;DR,PHP将查询字符串(在URL或body中)转换为$_GET或$_POST中的数组。例如:/?foo=bar变成Array([foo]=bar),查询字符串解析过程使用下划线删除或替换参数名称中的某些字符。例如/?%20wenson[id%00=42]转换为Array([wenson_id]=42)如果遇到waf对wenson_id的值进行拦截时,怎么样使用滥用PHP查询字符串解析器来绕过WAF,可以通过以下面方式来绕过这个解析过程:/wenson.php?%20wenson[id%00=42+AND+1=0—在PHP中,上面的示例%20wenson[id%00]中的参数名的值将存储为$_GET[wenson_id]。PHP需要将所有参数转换为一个有效的变量名,因此当解析查询字符串时,它主要做两件事:删除初始空格将一些字符转换为下划线(包括空格)通过如下所示的简单循环,您可以使用parser_str函数发现哪个字符被删除或转换为下划线:在这里可以用foo_bar的值进行fuzz测试,“[X]foo[X]bar[X]”是[X]的标记位,对这个标记位进行测试,如果web服务器接受带点或空白的标题名称,也会发生类似的事情。可以对fuzz测试的一些点:接下来进行拆分,进行分析:[1st]foo_barfoo[2nd]barfoo_bar[3rd]可以看出foo%20bar等同于foo+bar,并且可以被解析为foobar。如果使用一个正则规则来匹配时:alert
转载请注明:http://www.aierlanlan.com/rzgz/7603.html