关于 CTF 中 php 考点与绕过那些事的总结
warning:
这篇文章距离上次修改已过452天,其中的内容可能已经有所变动。
在CTF(Capture the Flag)中,PHP是一种常见的考点和绕过方式。以下是一些关键点和技巧的概述:
代码执行:
- 使用
eval(),exec(),system(),shell_exec(),passthru(),shell_exec()等函数执行PHP代码。 - 绕过:使用花括号
{},单引号',双引号",注释//或#,以及函数调用如base64_encode()和base64_decode()。
- 使用
文件包含:
- 使用
include(),require(),include_once(),require_once()等函数包含文件。 - 绕过:使用
.(点)进行路径拼接,使用php://input或data://协议,利用auto_prepend_file和auto_append_file指令。
- 使用
文件上传:
- 检查文件上传的扩展名和内容类型。
- 绕过:改变文件扩展名(例如,将
.jpg改为.php),使用图片处理软件嵌入PHP代码,使用POST请求中的Content-Type伪造文件类型。
会话文件损坏:
- 使用会话文件进行用户身份验证。
- 绕过:修改会话文件的内容或路径,使用PHP会话配置漏洞。
代码审核:
- 检查代码中的漏洞如RCE、SQL注入、XSS等。
- 绕过:手动审查代码、使用工具如
seay-pcaudit、RIPS等进行自动化审计。
密码学:
- 使用密码哈希函数如
md5(),sha1(),crypt()等进行密码验证。 - 绕过:使用散列密码字典、使用rabbit-hole算法、尝试暴力破解。
- 使用密码哈希函数如
权限提升:
- 通过PHP脚本获取服务器上的敏感信息。
- 绕过:使用
sudo提权、编写特殊的PHP脚本或利用PHP配置错误。
以下是一个简单的PHP代码执行绕过的例子:
原始代码(可能存在漏洞):
<?php
$cmd = $_GET['cmd'];
eval($cmd);
?>绕过方法:
http://example.com/vulnerable.php?cmd=echo%20"Hello%20World";在这个例子中,使用了URL编码后的echo语句,绕过了直接执行代码的限制。
评论已关闭