IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> Web1-Day6 -> 正文阅读

[PHP知识库]Web1-Day6

二、命令执行

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

2.1.4?create_function() 函数

  • 功能:通过传递的参数创建?个匿名函数,并且返回函数的?个名字。

注:此函数在内部执行一个eval() ,因此存在与eval() 相同的安全问题。此外,它还具有较差的性能和内存使用的量的特点。

1 create_function(string $args,string $code)
2 string $args //声明的函数变量部分

4 string $code //执行的方法代码部分

利用方式:

 $newfunc = create_function('', '$_REQUEST['cmd']');
 $newfunc();

例:

<?php
$newfunc = create_function('$a,$b', 'return "ln($a) + ln($b) = " . log($a * $b);');
echo "New anonymous function: $newfunc\n";
echo $newfunc(2, M_E) . "\n";
?>
  • creat_function 会创建一个匿名函数,在第一个 echo 中显示名字,在第二个 echo 中执行此函数。
  • creat_function 会在内部执行一个eval 函数,执行后面 return 语句,属于creat_function 中第二个参数 string?$code 位置。

此匿名函数创建与执行的过程等同于:

<?php
function hanshu($a,$b){
    return "ln($a) + ln($b) = " . log($a * $b);
}
?>

2.1.5 array_map() 函数

  • 为数组的每个元素应用回调函数
  • 将传入的数组按对应值传递给回调函数,回调函数处理结果组成新的数组作为返回值返回;传入的数组个数必须与回调函数的形参个数相同。
?
array_map(callable?$callback,?array?$array,?array?...$arrays):?array

?

array_map():返回数组,是为 array?每个元素应用?callback函数之后的数组。?array_map()?返回一个?array,数组内容为?array1?的元素按索引顺序为参数调用?callback?后的结果(有更多数组时,还会传入?arrays?的元素)。?callback?函数形参的数量必须匹配?array_map()?实参中数组的数量。

注:

  • callback:回调函数?callable,应用到每个数组里的每个元素。多个数组操作合并时,callback?可以设置为?null。 如果只提供了?array?一个数组,?array_map()?会返回输入的数组。
  • array:数组,遍历运行?callback?函数。
  • arrays额外的数组列表,每个都遍历运行?callback?函数。

利用方式:

 <?php 
 //func = system 
 $func = $_GET['func'];
 //cmd = ls 
 $cmd=$_GET['cmd']; 
 $array[0] = $cmd 
 $new_array = array_map($func,$array); //返回执行结果后的新数组
 //print_r($new_array); 9 ?>

例:

a)单个数组:

<?php
function cube($n)
{
    return ($n * $n * $n);
}
$a = [1, 2, 3, 4, 5];
$b = array_map('cube', $a);
print_r($b);
?>

$b 的值为:Array ( [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125 )

b)多个数组:

<?php
function show_Spanish($n, $m)
{
    return "The number {$n} is called {$m} in Spanish";
}
function map_Spanish($n, $m)
{
    return [$n => $m];
}
$a = [1, 2, 3, 4, 5];
$b = ['uno', 'dos', 'tres', 'cuatro', 'cinco'];
$c = array_map('show_Spanish', $a, $b);
print_r($c);
$d = array_map('map_Spanish', $a , $b);
print_r($d);
?>
$c:

Array
(
    [0] => The number 1 is called uno in Spanish
    [1] => The number 2 is called dos in Spanish
    [2] => The number 3 is called tres in Spanish
    [3] => The number 4 is called cuatro in Spanish
    [4] => The number 5 is called cinco in Spanish
)
$d:

Array
(
    [0] => Array
        (
            [1] => uno
        )
    [1] => Array
        (
            [2] => dos
        )
    [2] => Array
        (
            [3] => tres
        )
    [3] => Array
        (
            [4] => cuatro
        )
    [4] => Array
        (
            [5] => cinco
        )
)

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-01-24 10:36:11  更:2022-01-24 10:36:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/14 14:28:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码