php代码审计知识点,PHP代码审计基础知识点

一,PHP核心配置

一·配置典型两个文件(配置目录的规则文件)

php.ini(即仅在重启的时候可用)

.user.ini

二·配置典型的命令语句

1.用户限制语句,函数类

变量类

大小写敏感

directive = value 大小写敏感

全局变量配置

register_globals=off(作用是关闭自动注册的全局变量)

可使用的符号与参数类(ini文件中)

!、()、|位或、&位与、~位非、

Value可以使:用引号界定的字符串("foo”)、数组、PHP常量(E_ALL、M_PI)、INI常量(On、Off、none)、表达式

禁用函数类

禁用类/函数:disable_classes= ,disable_functions=opendir,readdir,scandir,fopen

接受逗号分隔的函数名。

短标签:short_open_tag=off

决定是否允许使用PHP代码开始标志的缩写形式(?>)

用户限制文件类

文件上传类

设置上传文件类的大小

file_uploads=on upload_max_filesize=8M

文件上传临时目录

upload_tmp_dir =(系统临时目录/tmp、C:\Windows\Temp)

日志类

日志类

error_log= 错误日志的位置,若不定义则默认写入Web服务器的错误日志中去。

log_errors = on 建议将错误日志输出到文件而不是直接输出到前端。

log_errors_max_length = 1024 错误日志关联信息的最大长度,设为0为无限长度。

用户限制目录与系统命令类

操作函数限制(对文件操作函数进行权限限制)

safe_mode=off

safe_mode_exec_dir=/var/www/html(执行程序主目录,即可执行系统命令的目录)

用户访问目录限制:open_basedir = .:/tmp/

一般可以设置只能访问网站目录,表示允许访问当前目录和/tmp/目录。

php代码审计知识点,PHP代码审计基础知识点_第1张图片

2,常见的危险函数

php代码执行函数

①eval()

概念:把字符串按照 PHP 代码进行执行

参数eval(phpcode)phpcode即需要规定计算的php代码

$a = $_GET['a'];

eval($a);

?>

②assert()

检查一个断言是否为 FALSE

③preg_replace()

作用:preg_replace 函数执行一个正则表达式的搜索和替换。

$a = $_GET['a'];

echo preg_replace("/test/e", $a, "just test!")//即将test/e的字符串中的just test 替换为$a

?>

php代码审计知识点,PHP代码审计基础知识点_第2张图片

②包含函数

require()、include()、require_once()、include _once()

分本地文件包含和远程文件包含,可以读取任意文件内容。

87ecf1ce9b7116a908a523ebf3559fdd.png③命令执行函数

passthru() 给定参数执行程序后且输出结果

function passthru(string $command,int[optional] $return_value)

proc_open():执行一个命令,并且打开用来输入的文件指针

popen():popen()的参数传递一条命令,并对并对 popen() 所打开的文件进行执行。

$cmd = $_GET['cmd'];

echo "";

echo popen($cmd,'r');

echo "";

?>

system()

执行 command 参数所指定的命令

命令常用

system("ls");

system("cat *.php");

exec类

shell_exec( $cmd )即执行的命令,注意返回的全部的值

$cmd = shell_exec('ping ' . $taeget);

exec()

和shell_exec()差不多,不同点前者在sehll环境下执行返回的是所有的值,后者返回的是一个值

exec( $command, $output, $return_var )

php代码审计知识点,PHP代码审计基础知识点_第3张图片

④文件操作函数

php代码审计知识点,PHP代码审计基础知识点_第4张图片

⑤特殊函数

php代码审计知识点,PHP代码审计基础知识点_第5张图片

三·常用的变量,函数与符号

php代码审计知识点,PHP代码审计基础知识点_第6张图片

$GLOBALS:引用全局作用域中可用的全部变量

function test(){

echo $test="test3";

echo $GLOBALS['test'];

}

$test = "test1";

test();

?>

#输出结果

#test3test1

$_GET:HTTP GET 变量

print_r($_GET);

?>

#如url?id=1&cmd=a

#执行结果Array([id]=>1[cmd]=>a)

(其余类方式同,即输出的即为该变量的意思)

又如

$_COOKIE:HTTP Cookies

print_r($_COOKIE);

?>

php代码审计知识点,PHP代码审计基础知识点_第7张图片

你可能感兴趣的:(php代码审计知识点)