题目描述
来源 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 文件: