php://include-wp-by-dodor


来写一点简单题。。。(qwq

<?php
show_source(__FILE__);
echo $_GET['hello'];
$page=$_GET['page'];
while (strstr($page, "php://")) {
  $page=str_replace("php://", "", $page);
}
include($page);
?>

一道简单的php伪协议绕过,涉及函数有strstr以及str_replace

题目代码分析

通过$page为变量名以get形式传参,对page进行检测,最后用include包含。函数的作用是将php://的数据替换。

绕过

因为strstr以及str_replace两个函数都区分大小写,在这里就非常容易绕过。使用PHP://就能直接绕过。

具体步骤

屏幕截图 2026-01-28 220516

传参,并附带来读取文件

屏幕截图 2026-01-28 220729屏幕截图 2026-01-28 220521

其他解法

运用其他伪协议

php://input,是一个只读流,用于访问 HTTP 请求的原始主体数据(body)。简单来说就是将请求体部分的内容当作文件进行读取。

php://filter/convert.base64-encode/resource=flag.php: 将flag.php的内容编码为base64,防止php代码引擎执行。

php://filter/convert.iconv.. 这个同样能够转换php文件的编码。
data://text/plain, echo “nihao data”, 这个协议可以将后面的内容当作文件传递(即echo “nihao data”)。

data://text/plain, echo "nihao data", 这个协议可以将后面的内容当作文件传递(即echo "nihao data")。


Author: DODOR
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source DODOR !
  TOC