淺談~
博主當成一次個人賽玩玩,沒想到這次比賽的賽題型別還是很新穎的,基本都是MISC型別的題目
我這里上傳了題目在百度云上,希望UU們手下留情~別讓它爆了隴劍杯題目(提取碼:vuno)
話不多說,直接上題解!!
1.1
使用wireshark打開其中的“Good.pcapng”流量包

發現有HTTP包,直接過濾HTTP包,再結合題目給出的提示,沒有發現dns、ftp包,所以判斷出是http協議攻擊:

所以選擇“http”協議的網路攻擊
2.1
使用wireshark打開其中的“goroot.pcap”流量包

發現有HTTP包,直接過濾HTTP包,右鍵選擇“追蹤流”進入http流,

發現“cookie”部分出現JWT的型別,所以判斷出是jwt認證

2.2

這個有點被坑到了
發現一個“POST /identity”包,直接追蹤打開
下翻,發現

直接拿去base64解碼
獲得:{"alg":"HS256","typ":"JWT"}{"id":10086,"MapClaims":{"aud":"admin","username":"admin"}}
拿去提交:10086#admin
結果發現是錯的~
然后一個一個地跟包,發現在第十個的時候JWT有變動

直接拿去base64解碼,
獲得的有效資訊:{"alg":"HS256","typ":"JWT"}{"id":10087,"MapClaims":{"username":"admin"}}
得到:10087#admin
2.3

使用wireshark打開其中的“goroot.pcap”流量包,隨著之前的進度,一個個查看HTTP包的傳遞內容,直到下面的一個http包

發現有HTTP包,直接過濾HTTP包,右鍵選擇“追蹤流”進入http流,


發現“alert(“root\n”)”
所以得出黑客獲取了root權限
2.4

繼續跟進流量包,查看后續的POST包

這里發現了黑客通過命令傳遞了一大串字符,直接拿去url解碼、base64解碼

發現結果是直接保存為1.c檔案,所以這個檔案就是黑客上傳的檔案名.
2.5

再次跟進HTTP包,查看黑客的行為,

發現了“looter.so”檔案,結合題目的提示“.so”檔案,猜測就是答案,
2.6

還是繼續根據流量包,

發現檔案“looter.so”檔案被導向/etc/pam.d/common-auth路徑,猜測這里就是被修改的組態檔,
“/etc/pam.d/common-auth”
3.1


3.4

繼續跟進流量包,慢慢尋找POST傳遞的包

發現一個檔案“1.php”,猜測這個就是黑客上傳的代碼形成的檔案,
3.6

繼續跟進

獲得一串十六進制代碼,直接010Editor打開

得到IP:192.168.239.123
3.7

跟隨3.6一樣,使用010Editor在那一串十六進制代碼里面發現了
“ socks5
plugin_user = 0HDFt16cLQJ
plugin_passwd = JTN276Gp”
=》0HDFt16cLQJ#JTN276Gp
4.1


發現日志存在很多404回饋,所以查看一下沒有404的記錄,使用python腳本跑一下就行
string=''
with open('access.log') as f:
string=f.readline()
while(string !=''):
if("404" not in string):
print(string)
string=f.readline()
然后從篩選出來的資料進行分析,發現

平時打WEB的應該都有經驗,這個“www.zip”一般放著leak的原始碼
=》原始碼檔案:www.zip
4.2

同樣是分析非404的資料,發現

這里有tmp,機靈的人已經拿去urldecode了

=》檔案名:sess_car
4.3

同樣是在/tmp目錄下的操作,發現
=》類:SplFileObject
7.1(相比于4,這里更簡單了,畢竟是“簡單日志分析”)

查看一下日志檔案,

連腳本都可以不改,除了檔案名不一樣外~
下面三行資料就是全部的解題內容了~~~

很容易就發現,攻擊引數是GET型別的?user
所以,=》攻擊引數:user
7.2

對之前的資料中間的引數分別拿去base64解碼,發現第二條有我們需要的
=》絕對路徑:/Th4s_IS_VERY_Import_Fi1e
7.3

同理7.2,

=》IP:192.168.2.197:8888
8.1

將日志檔案“access.log”拿去URL解碼,或者我們也可以很明顯地看出來,這就是一個bool盲注
=》手法:布爾盲注
8.2

簡單查看了一下日志,發現可以直接在日志獲取到結果,


得到庫名:sqli 、表名flag 、欄位flag
=》sqli#flag#flag
8.3
獲取欄位值,可以一個一個慢慢查看獲取(這樣比較費時間,還需要有耐心)
這里提供python腳本獲取,
from urllib import parse
num=0
line=0
tmp1=1
tmp2=2
str1=''
with open("access.log",'r') as f:
string=f.readline()
while(string !=''):
if("sqli.flag" in string):
string=parse.unquote(string)
num=string.find("sqli.flag")#字符
num+=19
line=string.find("sqli.flag")
line+=11
if(string[line+1] ==","):
tmp1=int(string[line])
elif(string[line+1] !=","):
num+=1
tmp1=int(string[line:line+2])
if(tmp1 ==tmp2): #發現目標字符,是上一行的
tmp2+=1
print(str1,end="")
str1=string[num] #保留上一行的字符
string=f.readline()

=>flag{deddcd67-bcfd-487e-b940-1217e668c7db}
小結
“簽到”:1.1
“jwt”:2
“webshell” :3
"日志分析":4
“流量分析”:5
“記憶體分析”:6
“簡單日志分析”:7
“SQL注入”:8
“wifi”:9
"ios":10
"機密記憶體":11
本次比賽上博主自己解出來的題目都在上面的WP上了,還有一些題目是提交錯誤次數上了三次,所以算是解題失敗不計分~~~還是覺得自己有點菜雞,比不上很多大佬
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/300417.html
標籤:其他
