如何滥用PHP字符串解析函数绕过IDS、IPS及WAF-黑客接单平台

在本文中,咱们将与咱们共享怎么运用PHP字符串解析函数绕过IDS/IPS以及运用防火墙规矩。 咱们都知道,PHP会将(在URL或body中的)查询字符串转换成$_GET或许$_POST中的相关数组。比方:/?foo=ba...

在本文中,咱们将与咱们共享怎么运用PHP字符串解析函数绕过IDS/IPS以及运用防火墙规矩。 咱们都知道,PHP会将(在URL或body中的)查询字符串转换成$_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”]中。

0x01 原理解析 PHP需要将一切参数转成有用的变量名,因此在解析查询字符串时,PHP首要会履行两个操作: 删去最初的空格符 将某些字符转换成下划线字符(包含空格符) 比方: 输入 解码 PHP变量名 %20foo_bar%00 foo_bar foo_bar foo%20bar%00 foo bar foo_bar foo%5bbar foo[bar foo_bar 比方咱们能够运用如下代码,勘探哪些字符会被parser_str函数删去或许转换为下划线:

图. PHP parser_str函数 foreach( [ "{chr}foo_bar", "foo{chr}bar", "foo_bar{chr}" ] as $k => $arg) { for($i=0;$i255;$i++) { echo "33[999D33[Kr"; echo "[".$arg."] check ".bin2hex(chr($i)).""; parse_str(str_replace("{chr}",chr($i),$arg)."=bla",$o); /* yes... I've added a sleep time on each loop just for the scenic effect

  • 发表于 2021-04-16 13:49
  • 阅读 ( 213 )
  • 分类:互联网

0 条评论

请先 登录 后评论
赵云
赵云

665 篇文章

你可能感兴趣的文章

相关问题