Web_XCTF_WriteUp | Web_php_include

题目

分析

对 php 代码进行分析:

<?php                                        // php开头
show_source(__FILE__);                       // 对当前源文件进行高亮显示
echo $_GET['hello'];                         // 收集get表单中hello的数据输出
$page=$_GET['page'];                         // 将get表单中page的数据赋给变量page
while (strstr($page, "php://")) {            // 当page变量中含有字符串“php://”则进入循环。strstr查找“php://”在page变量中是否存在
    $page=str_replace("php://", "", $page);  // 将page变量中的“php://”删去
}
include($page);                              // 在服务器执行PHP文件之前插入page变量内容
?>                                           // php结尾

代码中有 include() 函数,猜测是文件包含漏洞。


代码里有对 PHP 流 php:// 的过滤,虽然不清楚这里的 PHP 版本,但先试试 data:// 封装器:

URL 编码一次:

提交执行:

确定当前 PHP 版本为 5.3.10。


通过 data:// 数据流 + php 命令执行函数查询当前工作目录下的内容(二选一):

URL 编码后执行:


根据文件名猜测 flag 在 fl4gisisish3r3.php 文件中,更改 php 命令打开文件:

编码执行结果:

拿到 flag。

使用 system() 命令同理。


看大佬的 WP 提到可以根据 strstr()str_replace() 对大小写的敏感差异采用 PHP:// 绕过过滤,试了一下发现不行,原因不明:

Flag

ctf{876a5fca-96c6-4cbd-9075-46f0c89475d2}

参考

PHP 教程-菜鸟教程
PHP 代码审计-CTF Wiki
PHP伪协议总结-我汤姆要报警了-SegmentFault思否
当我们看到phpinfo时在谈论什么-春告鳥-博客园
PHP中常见的命令执行函数与代码执行函数_-passthru-CSDN
CTF-WEB:PHP 伪协议-乌漆WhiteMoon-博客园
攻防世界-Web_php_include (四种解法)-笑花大王-博客园

posted @ 2023-12-04 14:38  Guanz  阅读(14)  评论(0编辑  收藏  举报