命令执行方面

system()

exec()

shell_exec()

passthru()类似于exec()

popen()

<?php
$cmd = 'whoami';
$re = popen($cmd,'r');
print_r(fgets($re));
fclose($re);

proc_open()这个用法有点复杂,没看懂

<?php
$descriptorspec=array( //这个索引数组用力指定要用proc_open创建的子进程的描述符
0=>array('pipe','r'), //STDIN
1=>array('pipe','w'),//STDOUT
2=>array('pipe','w') //STDERROR
);
$handle=proc_open('dir',$descriptorspec,$pipes,NULL);
//$pipes中保存的是子进程创建的管道对应到 PHP 这一端的文件指针($descriptorspec指定的)
if(!is_resource($handle)){
die('proc_open failed');
}
//fwrite($pipes[0],'ipconfig');
print('stdout:<br/>');
while($s=fgets($pipes[1])){
print_r($s);
}
print('===========<br/>stderr:<br/>');
while($s=fgets($pipes[2])){
print_r($s);
}
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($handle);
?>

pcntl_exec()

shell.php
<?php pcntl_exec(“/bin/bash”, array(“/tmp/shell.sh”));?>

shell.sh

#/tmp/shell.sh
#!/bin/bash
ls -l /

反引号


代码执行方面

eval()

assert()

preg_replace()的\e模式

create_function()

$cmd = 'echo 1;}phpinfo();//';
create_function($a,$cmd);

ob_start()

<?php
$cmd = 'system';
ob_start($cmd);  //将命令存储到内部缓冲区
echo "whoami";
ob_end_flush(); //清除内部缓冲区,此时将输出缓冲区的内容当作参数执行并输入执行结果,即执行system($_GET(a))
?>

call_user_func()

<?php
$a = 'system';
$b = 'whoami';
call_user_func($a,$b);
?>

call_user_func_array

<?php
$a = 'system';
$b = 'whoami';
call_user_func_array($a,array($b));
?>

array_map

<?php
$a = 'system';
$b = 'whoami';
array_map($a,($b));
?>

动态函数

<?php
$a = 'system';
$b = 'whoami';
$a($b);
?>

其他

phpinfo()

scandir()

列出指定路径中的文件和目录

get_defined_vars()

返回由所有已定义变量所组成的数组

get_defined_constants()

返回当前所有已定义的常量名和值

get_defined_functions()

返回一个包含所有已定义函数列表的多维数组

get_included_files()

返回所有被 include、 include_once、 require 和 require_once 的文件名

get_cfg_var

获取 PHP 配置选项的值

ini_set()

可用于修改、设置 PHP 环境配置参数

ini_alter()

ini_set() 函数的一个别名函数

ini_get_all()

获取所有已注册的配置选项

ini_restore()

可用于恢复 PHP 环境配置参数到其初始值

error_log()

将错误信息发送到指定位置

error_log("<?php phpinfo();?>", 3, "D:\\work\\php\\shell.php");

chroot()

可改变当前 PHP 进程的工作根目录,仅当系统支持 CLI 模式PHP 时才能工作,且该函数不适用于 Windows 系统

chgrp()

改变文件或目录所属的用户组

chown()

改变文件或目录的所有者


更多

PHP 中可以利用的危险的函数 | K0rz3n's Blog

最后修改:2023 年 12 月 15 日
如果觉得我的文章对你有用,请随意赞赏