web狗之writeup–do you know upload?
- 2019 年 11 月 26 日
- 筆記
Do you know upload?
Description
加油吧,少年。(说了等于没说)
Solution
这是一道上传绕过的题目,其实没有什么特别的地方。这里就是想介绍一下自己使用的一个特别好的工具,就是 weevely。这个工具是 kali 中类似于中国菜刀的工具,功能强大。这里主要介绍一下简单的使用以及我是用的时候一个小小的坑。
打开网站,可以看到是一个图片上传的页面:
没有什么特殊的地方,打开开发者工具,可以看到 html 包含了一段注释的代码:
<!-- include($_GET['file']); -->
那么可以断定后台应该使用的是 php 了。那么可以上传一个 php 木马来连接服务器了。上传绕过的经典套路就是先生成一个木马,然后将文件后缀改为图片格式,然后在 burp 中再将文件名改过来。下面就是 weevely 的使用了。
首先在 kali 中搜索这个工具打开,先生成木马:( weevely generate<password><path>
)
这样我们就在 /root/project 中生成了一个 cmd.php 木马。下面就是如何将这个马上传了。首先将这个文件的后缀名改为 jpg,然后选择图片上传,然后在 burp 中将文件名修改为 cmd.php:
文件上传成功,保存在 upload/ 路径下。下面就可以通过 weevely 拿到后门了。上传之后,首先访问一下文件路径。然后通过命令: weevely<url-path><password>
就可以连接远程机器了:
接着就可以控制机器了,首先可以看到 upload 路径,路径即是上传的文件。可以看到 html 路径下有多个文件,比如 ctf.sql 以及 config.php。ctf.sql 是一个空文件,里面没有任何内容。打开 config.php 可以看到是一段 php 代码:
<?php error_reporting(0); session_start(); $servername = "localhost"; $username = "ctf"; $password = "ctfctfctf"; $database = "ctf"; // 创建连接 $conn = mysql_connect($servername,$username,$password) or die(" connect to mysql error"); mysql_select_db($database); ?>
可以看到代码主要是一段 mysql 数据库的连接,数据库连接的信息都给出了。下面就是可以使用 sql_console 模块来进行数据库的交互了。通过 :sql_console-u ctf-p ctfctfctf
就可以连接数据库了。接下来可以看到数据库的信息以及表格的信息。
可以看到除了 information_schema 数据库,还有一个叫 ctf 的数据库,而且在 ctf 数据库中还有一个叫 flag 的表格。很明显,flag 很有可能就在在这个表格中。但是使用 select*fromflag
总是提示 [-][console]Nodata returnedCheckcredentialsandDB availability
。找了很多办法,但始终没办法查出来。后来才知道 weevely 无法保存数据库的状态,所以无法使用 usedatbasename
这样的语句。其实使用 select*fromctf.flag
就可以拿到 flag 了啊。