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 了啊。

Tags: