1. 程式人生 > >Bugku -分析-合集

Bugku -分析-合集

文章目錄

一、flag被盜

http篩選
在這裡插入圖片描述

選中一個post包,追蹤tcp資料流
在這裡插入圖片描述
得到flag
在這裡插入圖片描述

二、中國菜刀

同理和 flag被盜一樣的流程
追蹤tcp得到php一句話,菜刀連線即可
在這裡插入圖片描述

三、這麼多資料包

按照 flag被盜 、中國菜刀 的套路失敗,沒有有用的資訊
看資料包顏色變化,中間一段猩紅色,應該就是攻擊機對被攻擊機的掃描了
4730-5742之間一大段的“平原”,之後沒了什麼聯通
在此期間基本上是4444與1040之間的通訊,追蹤TCP資料流也沒什麼用

過濾4444和1040的通訊

! tcp.port eq 4444 or ! tcp.port eq 1040 and ip.addr eq 192.168.116.138

在這裡插入圖片描述

發現兩個主機上的1234、35880埠還存在通訊

追蹤tcp
在這裡插入圖片描述

base64解碼
在這裡插入圖片描述

四、手機熱點

必應 “藍芽傳輸協議”,即obex。
wireshark搜尋obex用WireShark分析

在這裡插入圖片描述

傳了一個“secret.rar”壓縮包
選中
在這裡插入圖片描述
匯出為x.rar,解壓得到Flag
在這裡插入圖片描述

五、抓到一隻蒼蠅

Step1:http過濾
在這裡插入圖片描述

檢視資料包可以得知是傳送QQ郵件
http過濾 可以看到第一個資料包有fly.rar
第一個壓縮包內涵的資訊如下

{
    "path":"fly.rar",
    "appid":"",
    "size":525701,
    "md5":"e023afa4f6579db5becda8fe7861c2d3",
    "sha":"ecccba7aea1d482684374b22e2e7abad2ba86749",
    "sha3":""
}

繼續增加過濾條件

http && http.request.method==POST

在這裡插入圖片描述

我們需要做的就是將這個wireshark資料包中的檔案提取出來,檢視接下來的幾個post請求,發現 midia type 都是資料流的格式,猜測這幾個資料流裡就是我們需要的檔案。

Step2:匯出資料包
5個數據包中的Media Type域的大小各為131436 、131436 、131436 、131436 、1777,共527521,比fly.rar大小525701大1820,多出來的猜想是包頭類的資訊,平均每個包大364。

先匯出這5個數據包,使用Wireshark自帶的匯出工具匯出Media Type的內容

依次重新命名為 1 2 3 4 5
在這裡插入圖片描述

Step3:整合所獲得的檔案碎片,獲得fly.rar

將五個檔案丟到kali下

使用dd命令分別將其前364個位元組去除:

dd if=1 bs=1 skip=364 of=1.1

dd if=2 bs=1 skip=364 of=2.1

dd if=3 bs=1 skip=364 of=3.1

dd if=4 bs=1 skip=364 of=4.1

dd if=5 bs=1 skip=364 of=5.1

(dd if=檔名 bs=輸入輸出塊的大小 skip=便宜量 of=新的檔名)

dd命令詳解
在這裡插入圖片描述
but,,,如圖,出現了部分檔案無法跳至偏移量,導致接下來的操作失敗。。。所以借鑑了其他人的圖。。。

使用cat命令將碎片拼成完整的fly.rar:

cat  1.1  2.1  3.1  4.1  5.1  >  fly.rar

使用md5sum命令檢查檔案完整性:

md5sum fly.rar

圖源:https://windard.com/blog/2016/05/15/Extract-File-From-Pcap

獲得e023afa4f6579db5becda8fe7861c2d3,檔案完整!

Step4:破譯偽加密,獲得flag.txt

偽加密,即這是一個未加密過的rar檔案,但是卻將加密位置為了1。只需將檔案開頭處0x74位後面的0x84位置改為0x80即可。

解壓失敗,需要密碼,壓縮包偽加密
將檔案頭0x1674後面的84改為80。(84為加密,80/20不加密)

圖源:https://windard.com/blog/2016/05/15/Extract-File-From-Pcap

現在就可以正常解壓,解壓結果是一個 flag.txt,開啟看一下發現是亂碼,並不是真正的txt檔案,看一下檔案型別,發現是原來是一個 windows 下的小程式,改檔案字尾名在windows下跑一遍,著實是蒼蠅滿螢幕亂跑,可怕。。。

Step5:分析flag.txt檔案,獲得二維碼,獲取flag

binwalk 看一下里面還有什麼東西,發現一堆的圖片,弄出來看看。

binwalk flag.txt
foremost -v -i flag.txt
圖源:http://blog.sina.com.cn/s/blog_414d78870102vpgx.html
匯出來89個圖片,好傢伙,在圖片裡發現一個二維碼,用手機掃一掃,終於出來了flag,flag{m1Sc_oxO2_Fly}。
解壓後獲得flag.txt。看起來這是個txt檔案,但把字尾改成exe,即可執行。出現了傳說中的大蒼蠅!

五、日誌審計

sqlmap盲注日誌審計。

題目描述
請從流量當中分析出flag。

考點
本題考查根據日誌,還原sqlmap採用二分法注入獲得的資料。

解題過程
題目是sqlmap採用二分法進行注入的日誌,辦法很多,可以手撕,可以根據特徵進行分析。

這裡舉例說一種。如果對Apache日誌熟悉的話,應該知道,access.log裡面會記錄Response的狀態碼和Response包的長度。猜解正確或錯誤,返回的長度是不同的。

urldecode解碼幾條記錄:

id=2' AND ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM dvwa.flag_is_here ORDER BY flag LIMIT 0,1),24,1))>96 AND 'RCKM'='RCKM&Submit=Submit HTTP/1.1" 200 1765 
id=2' AND ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM dvwa.flag_is_here ORDER BY flag LIMIT 0,1),24,1))>112 AND 'RCKM'='RCKM&Submit=Submit HTTP/1.1" 200 1765 
id=2' AND ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM dvwa.flag_is_here ORDER BY flag LIMIT 0,1),24,1))>120 AND 'RCKM'='RCKM&Submit=Submit HTTP/1.1" 200 1765 
id=2' AND ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM dvwa.flag_is_here ORDER BY flag LIMIT 0,1),24,1))>124 AND 'RCKM'='RCKM&Submit=Submit HTTP/1.1" 200 1765 
id=2' AND ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM dvwa.flag_is_here ORDER BY flag LIMIT 0,1),24,1))>126 AND 'RCKM'='RCKM&Submit=Submit HTTP/1.1" 404 5476 
id=2' AND ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM dvwa.flag_is_here ORDER BY flag LIMIT 0,1),24,1))>125 AND 'RCKM'='RCKM&Submit=Submit HTTP/1.1" 404 5476

以猜解的第24位為例,猜解正確的時候,返回的狀態碼為200,長度為1765;猜解錯誤的狀態碼為404,長度為5476。而且可以得出結論,sqlmap採用二分法進行注入的時候,正確的值為最後一次進行>比較正確的值+1,即為125。

簡單寫個指令碼,匹配一下即可。

# coding:utf-8
import re
import urllib

f = open('C:/Users/Bayernchen Zhouzhong/Desktop/5b0b08e0-31aa-4a8d-ae19-89b843554506/access.log','r')
lines = f.readlines()
datas = []
for line in lines:
    t = urllib.unquote(line)    
    if '1765' in t and 'flag' in t:  # 過濾出與flag相關,正確的猜解
        datas.append(t)

flag_ascii = {}  
for data in datas:
    matchObj = re.search( r'LIMIT 0,1\),(.*?),1\)\)>(.*?) AND', data)   
    if matchObj:
        key = int(matchObj.group(1))
        value = int(matchObj.group(2))+1
        flag_ascii[key] = value     # 使用字典,儲存最後一次猜解正確的ascii碼
        
flag = ''
for value in flag_ascii.values():
    flag += chr(value)
    
print flag

在這裡插入圖片描述

六、weblogic

(廣告且開掛。。。)

題目描述
黑客攻擊了Weblogic應用,請分析攻擊過程,找出Weblogic的主機名。flag格式:flag{}

Tip:主機名為十六進位制。

考點
weblogic 攻擊流量審計。模擬了爆破weblogic登入密碼,通過部署war包getshell,執行命令獲取hostname的操作。

解題過程
使用科來分析工具開啟流量包,在資料包選項中,Ctrl+F搜尋字串hostname,可以找到編號為658、662的資料包當中存在hostname關鍵詞。

image.png

其中編號662資料原地址為服務端,是http的Response包。右鍵解碼資料包,可以很直觀的看到服務端返回的內容:

image.png