一、文件包含漏洞
| 函数名 | 说明 | 特点 |
|---|
include() | 包含并执行指定文件 | 出错后继续执行后续代码 |
include_once() | 仅包含一次指定文件 | 避免重复包含 |
require() | 包含并执行指定文件 | 出错后停止执行 |
require_once() | 仅包含一次指定文件 | 出错后停止执行 |
file_get_contents() | 读取文件内容 | 支持URL包装器 |
file_put_contents() | 写入文件内容 | 支持URL包装器 |
readfile() | 读取并输出文件内容 | 直接输出到缓冲区 |
file() | 读取文件内容到数组 | 按行读取 |
二、XSS漏洞
| 函数名 | 说明 | 用途 |
|---|
htmlspecialchars() | 将特殊字符转换为HTML实体 | 防御XSS的核心函数 |
htmlentities() | 将所有适用字符转换为HTML实体 | 更全面的转义 |
strip_tags() | 去除HTML和PHP标签 | 简单过滤 |
addslashes() | 在指定字符前添加反斜杠 | 转义引号 |
filter_var() | 过滤变量 | 输入验证 |
preg_match() | 正则表达式匹配 | 输入验证 |
str_replace() | 字符串替换 | 简单过滤 |
json_encode() | JSON编码 | JavaScript上下文安全输出 |
三、Upload-lab文件上传漏洞
| 函数名 | 说明 | 安全相关 |
|---|
move_uploaded_file() | 移动上传文件 | 文件保存 |
getimagesize() | 获取图片尺寸 | 文件内容验证 |
exif_imagetype() | 获取图片类型 | 文件头验证 |
pathinfo() | 获取文件路径信息 | 后缀提取 |
basename() | 获取文件名 | 文件名处理 |
strtolower() | 转换为小写 | 后缀统一 |
strrchr() | 查找最后出现的字符 | 后缀提取 |
substr() | 截取字符串 | 后缀截取 |
in_array() | 检查值是否在数组中 | 白名单验证 |
finfo_file() | 获取文件MIME类型 | 真实类型检测 |
mime_content_type() | 获取文件MIME类型 | 真实类型检测 |
file_get_contents() | 读取文件内容 | 文件内容读取 |
file_put_contents() | 写入文件内容 | 文件写入 |
四、命令执行漏洞
| 函数名 | 说明 | 输出方式 |
|---|
system() | 执行外部程序 | 直接输出最后一行 |
exec() | 执行外部程序 | 返回最后一行,可通过第2参数获取全部 |
shell_exec() | 通过shell执行命令 | 返回完整输出字符串 |
passthru() | 执行外部程序 | 直接显示原始输出 |
popen() | 打开进程管道 | 返回文件指针 |
proc_open() | 打开进程并控制管道 | 可控制stdin/stdout/stderr |
pcntl_exec() | 在当前进程空间执行 | 替换当前进程 |
反引号` | 执行shell命令 | 返回输出字符串 |
eval() | 执行PHP代码 | 代码执行(非命令执行) |
assert() | 测试表达式 | PHP 8.0前可执行代码 |
call_user_func() | 调用回调函数 | 动态函数调用 |