日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

bugku——分析(流量分析)题解

發(fā)布時(shí)間:2024/9/30 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bugku——分析(流量分析)题解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

1,flag被盜

2,中國(guó)菜刀

3,這么多數(shù)據(jù)包

4,手機(jī)熱點(diǎn)

5,抓到一只蒼蠅

6,日志審計(jì)

7,weblogic

8,信息提取(超詳細(xì))

9,特殊后門


1,flag被盜

ctrl + f 打開搜索框,搜flag ,找到 93 個(gè)數(shù)據(jù)包里有 flag.txt字樣,

右鍵,追蹤 TCP數(shù)據(jù)流,在其中看到了 flag:

flag{This_is_a_f10g}

2,中國(guó)菜刀

在 分組字節(jié)流中搜索 flag 字符串,找到第8 個(gè)包,追蹤tcp數(shù)據(jù)流

看到了 flag.tar.gz,猜測(cè)流量包中隱藏了一個(gè)壓縮包,

用binwalk 審查一下:發(fā)現(xiàn)了一個(gè)壓縮包,分離

key{8769fe393f2b998fa6a11afe2bfcd65e}

3,這么多數(shù)據(jù)包

前邊的都是些無關(guān)緊要,一直到NO104,下面的再干嘛?

源ip138一直向目標(biāo)ip159發(fā)送syn握手包,想要建立連接,其實(shí)就是端口掃描,原理就是,想和你某個(gè)端口建立連接,然后看這個(gè)端口的回復(fù)的類型來看下是否開放了此端口。我們現(xiàn)在就可以知道138是客戶端,159是服務(wù)器端了。紅色的包是服務(wù)器向客戶端回復(fù)的信息,代表此端口沒有開放。

其實(shí)就是在掃描服務(wù)器 159的開放端口

看到 中間有一段 是與 服務(wù)器 3389的通信

說明服務(wù)器端的 3389端口開放,跟蹤數(shù)據(jù)流

發(fā)現(xiàn)大串的無用亂碼:

直接搜索 tcp

然后拉到最后 掃描結(jié)束后發(fā)送的數(shù)據(jù)包,4444端口和 1024 的端口之間的通信,追蹤數(shù)據(jù)流,還是沒有發(fā)現(xiàn)什么

然后又發(fā)現(xiàn)了 12345 端口和 35800之間的通信? 追蹤數(shù)據(jù)流 發(fā)現(xiàn)了一段 base 64密文 解密后得到flag

CCTF{do_you_like_sniffer}

4,手機(jī)熱點(diǎn)

方法一: 不管流量包中有沒有隱藏文件,先分離一下看看,直接用foremost分離一下

分離出來 一個(gè)壓縮包,解壓出來一張圖片,flag.jpg

方法二:正常思路,題目描述說是共享手機(jī)熱點(diǎn),然后向電腦發(fā)送了一些東西,這里應(yīng)該是通過 藍(lán)牙協(xié)議 (obex)發(fā)送得文件

過濾出 obex協(xié)議的包,

導(dǎo)出分組字節(jié)流 保存為 123.rar 解壓出來一張圖片 flag.jpg

?

5,抓到一只蒼蠅

首先在 分組字節(jié)流中 搜索一下 字符串 flag 找到第一個(gè) 包,追蹤一下數(shù)據(jù)流 ,

然后就看到了上述信息,知道了應(yīng)該是在用 qq郵箱傳輸文件,

文件的信息: fly.rar? 文件的大小為 525701

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

既然知道了在上傳文件,肯定要用到 http的request的 POST方法

在過濾器中 輸入

http && http.request.method==POST

然后找到這5個(gè)包,第一個(gè)包是 文件的信息,后面5個(gè)包為數(shù)據(jù)

分別查看其中 date 的長(zhǎng)度:

前四個(gè) 為 131436 最后一個(gè)為 17777

所以 131436*4 +17777=527571? 與第一個(gè)包給出的 fly.rar的長(zhǎng)度 525701 差 1820

因?yàn)槊總€(gè)包都包含頭信息,1820/5 = 364

所以每個(gè)包的頭信息為 364

接下來導(dǎo)出數(shù)據(jù)包:

wireshark->文件->導(dǎo)出對(duì)象->http->選擇save對(duì)象

將對(duì)應(yīng)的包 分別save 為 1 2 3 4 5

將這五個(gè)包拖進(jìn) kali中?

執(zhí)行:

dd if=1 bs=1 skip=364 of=11dd if=2 bs=1 skip=364 of=22dd if=3 bs=1 skip=364 of=33dd if=4 bs=1 skip=364 of=44dd if=5 bs=1 skip=364 of=55

將數(shù)據(jù)包的頭部的 364個(gè)字節(jié)去除? 得到 11 22 33 44 55

將這五個(gè)包合并

cat 11 22 33 44 55 > fly.rar

查看一下 flag.rar的md5值是否正確

md5sum fly.rar

正確

解壓,跳出提示文件頭損壞,并且要求輸入密碼

知道是偽密碼,用winhex打開,修改文件頭,將 84 改為 80,保存

解壓得到,flag.txt 打開一堆亂碼,直接用 foremost分離一下,得到很多的圖片

發(fā)現(xiàn)一張二維碼,掃描后得到flag

flag{m1Sc_oxO2_Fly}

?

其實(shí)我剛開始不是這么做的,我是直接用foremost分離? 流量包 ,然后分離出來幾張圖片 和一個(gè)壓縮包,嘗試解壓

爆出一堆錯(cuò)誤,并提示輸入密碼,將 文件頭的 84 修改為 80 后依然打不開 ,,可能是 這個(gè)文件中還包含了其他錯(cuò)誤信息,然后就換用上面的方法了

?

6,日志審計(jì)

用 notepad++ 打開 日志文件,先用 插件中的 MIME Tool? 中的 URL decode 解一下碼

然后就能清楚的看出來 是在進(jìn)行 sql 盲注操作,

進(jìn)一步審查,還可以看到每一條語句 返回的狀態(tài)碼 ,并且知道 他是用的 二分法在進(jìn)行 sql盲注

我需要做的就是找到 每一個(gè) 測(cè)試的字符的 最后一條狀態(tài)碼為 200 的 語句中的 ascii 值并記錄下來

例如:

由于使用的是二分法,所以我們這里可以知道? flag的第 18 個(gè)字符的ascii 為? 117+1? ,118

當(dāng)然你你也可以用手工的方法,一個(gè)一個(gè)的記下 flag 每一個(gè) 字符的 ascii 值 (flag也就 25個(gè)字符,如果寫不出代碼的話)

當(dāng)然最好是用腳本跑出來

我找了個(gè)腳本:

# coding:utf-8 import re import urllibf = open('access.log', 'r') lines = f.readlines() datas = [] for line in lines:t = urllib.unquote(line)# 過濾出與flag相關(guān),正確的猜解,這里只收集正確的猜解,而測(cè)試字符的ascii = 最后一個(gè)正確的猜解的ascii +1(這是二分法的一個(gè)隱藏規(guī)律)if '200 1765' in t and 'flag' in t: 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)) + 1flag_ascii[key] = value # 使用字典,保存最后一次猜解正確的ascii碼flag = '' for value in flag_ascii.values():flag += chr(value)print flag

解釋一下:

t = urllib.unquote(line)? ? ? ? ? ? 就是將 文本進(jìn)行 urldecode 解碼

if '200 1765' in t and 'flag' in t:? ?如果語句中有這兩個(gè)字符串就直接將這個(gè)語句 存入 數(shù)組datas中
? ? ? ? datas.append(t)

matchObj = re.search(r'LIMIT 0,1\),(.*?),1\)\)>(.*?) AND', data)? ? 在date 中搜索符合 正則表達(dá)的 字符串并 將匹配的字符串存入變量 matchObj 中

? ? ? ? key = int(matchObj.group(1))? ? ? ? ?取 變量matchObj 中 的第一個(gè)括號(hào)里的內(nèi)容 (也就是上條語句中的 (.*?)中的內(nèi)容)并轉(zhuǎn)為10進(jìn)制
? ? ? ? value = int(matchObj.group(2)) + 1? ? ?取 變量matchObj 中 的第二個(gè)括號(hào)里的內(nèi)容,并轉(zhuǎn)為 10 進(jìn)制

?

得到 flag:flag{sqlm4p_15_p0werful}

?

7,weblogic

提示:

黑客攻擊了Weblogic應(yīng)用,請(qǐng)分析攻擊過程,找出Weblogic的主機(jī)名。flag格式:flag{}

Tip:主機(jī)名為十六進(jìn)制。

黑客的攻擊過程:

weblogic 攻擊流量審計(jì)。模擬了爆破weblogic登錄密碼,通過部署war包getshell,執(zhí)行命令獲取hostname的操作。

正常思路先在分組字節(jié)流中搜索 字符串 hostname

找到了兩個(gè) 包? no.658 662

追蹤流? 然后搜索 hostname?

然后就找到了??

flag{6ad4c5a09043}

?

8,信息提取(超詳細(xì))

曾經(jīng)在比賽中也遇過幾乎一樣的題,一直沒有好好的寫過一篇詳細(xì)的博客,今天決定借助這個(gè)題好好記錄理解一下這種類型的題

提示 : sqlmap

打開流量包,也觀察到了 是 用sqlmap進(jìn)行的 sql盲注的過程,用的是二分法

為了更好的理解 注入的過程 我們首先把 注入語句提取出來,這樣方便觀察

?

過濾http流量? ,然后? ?文件 》導(dǎo)出分組解析結(jié)果 》為CSV? ? ? 保存為 123.txt

用notepad++? 打開 123.txt,可以看到語句語句中還是夾雜著很多的urlcode??

全選? , 然后? ?插件 》MIME Tools? 》 url decode ,這樣就把URLcode轉(zhuǎn)為更直觀的 ascii了

然后再 來理解用 二分法 進(jìn)行sql盲注的過程

以flag 的第一個(gè)字符為 例 :

綠色框中的數(shù)字? 代表是測(cè)試第幾個(gè) 字符

紅色框中的數(shù)字??代表 與當(dāng)前測(cè)試的字符的ascii值 相比較的 值

粉色框中數(shù)字? 代表返回的數(shù)據(jù)的長(zhǎng)度(一會(huì)我們要依據(jù)這個(gè)來判斷上面的語句是否正確)

ascii有 128個(gè)所以從? 64 開始判斷,然后是96(64和128的中間值),說明>64是正確的 ,才會(huì)取96,然后是 80,80小于96,說明>96是錯(cuò)誤的,所以才會(huì)取?64和96 的中間值 80,然后是 72 ,說明>80是錯(cuò)誤的,取80和64之間的中間值72,然后是76,說明>72是正確的,才會(huì)取 72 和80之間的中間值76,然后是 74,說明>76是錯(cuò)誤的,才會(huì)取 72 和76的中間值 74,然后是73,說明>74是錯(cuò)誤的,才會(huì)取 72 和 74的中間值 73

至于 > 73 語句是否正確,關(guān)系到我們最后的取值,

我們已經(jīng)知道了 第一個(gè)字符 的ascii值 的范圍 為? 72< x <= 74,? 至于是 73 還是 74 ,需另做判斷:

若 > 73 正確, 則 x = 74? 第一個(gè)字符 的ascii值為 74? 就是 J

若 >73? 錯(cuò)誤,則? x = 73 就是 I

由于我們上面已經(jīng)知道了? >64 是正確的? ? 返回包的數(shù)據(jù)長(zhǎng)度是 467

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?>96 是錯(cuò)誤的? ? 返回包的數(shù)據(jù)長(zhǎng)度是 430

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?>80?是錯(cuò)誤的? ? 返回包的數(shù)據(jù)長(zhǎng)度是 430

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?>72?是正確的? ? 返回包的數(shù)據(jù)長(zhǎng)度是 467

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?>76 是錯(cuò)誤的? ? 返回包的數(shù)據(jù)長(zhǎng)度是 430

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?>74?是錯(cuò)誤的? ? 返回包的數(shù)據(jù)長(zhǎng)度是 430

可以看到 當(dāng)判斷語句正確時(shí) ,返包的數(shù)據(jù)長(zhǎng)度 是 大于 430的 ,錯(cuò)誤時(shí) 是小于等于 430

然后看到? 最后一條語句? >73 的返回值 為 430,說明與錯(cuò)誤, 第一個(gè)字符的ascii 為? 73??

?

理解了過程就好做多了

我們只需要 找到 當(dāng)前測(cè)試字符的? 最后一條的測(cè)試語句的 ascii值? 和 返回值

如果返回值大于 430? 則? ?當(dāng)前測(cè)試字符的ascii 值 為? ?最后一條測(cè)試語句的ascii值

如果返回值 小于等于 430 則 當(dāng)前測(cè)試字符的ascii值 為? 最后一條測(cè)試語句的ascii? ?+? ?1

?

方法一:(當(dāng)flag 較短的時(shí)候)

當(dāng)flag較短的時(shí)候,我們肯定是用手工 一個(gè)一個(gè)記下 每個(gè)字符的ascii值 比較快

方法二: (當(dāng)flag 較長(zhǎng)時(shí))

當(dāng)flag 為 25個(gè)字符以上的時(shí)候,手工就顯得太費(fèi)勁,不如寫個(gè)腳本來的快,就想本題一樣,flag的長(zhǎng)度為 33

上腳本:

import re import urllib.parse# 更改為自己從wireshark提取出的csv文件地址 f = open(r"123.txt") lines = f.readlines() datas = [] # 轉(zhuǎn)碼, 保存進(jìn)datas for line in lines:datas.append(urllib.parse.unquote(line)) lines = [] # 懶得改, 就復(fù)用一下, 這個(gè)lines保存注入flag的url for i in range(len(datas)): # 提取出注入flag的urlif datas[i].find("isg.flags ORDER BY `value` LIMIT 0,1),1,1))>64") > 0:lines = datas[i:]break flag = {} # 用正則匹配 macth1 = re.compile(r"LIMIT 0,1\),(\d*?),1\)\)>(\d*?) HTTP/1.1") macth2 = re.compile(r'"HTTP","(\d*?)","HTTP/1.1 200 OK') for i in range(0, len(lines), 2): # 因?yàn)橛蟹祷仨憫?yīng), 所以步長(zhǎng)為2get1 = macth1.search(lines[i])if get1:key = int(get1.group(1)) # key保存字符的位置value = int(get1.group(2)) # value保存字符的ascii編碼get2 = macth2.search(lines[i + 1])if get2:if int(get2.group(1)) > 450:value += 1flag[key] = value # 用字典保存flag f.close() result = '' for value in flag.values():result += chr(value) print(result)

為什么腳本中 判斷的返回值取? 450 呢? 因?yàn)?取430時(shí),得出來的flag不對(duì),仔細(xì)查看123.txt后,發(fā)現(xiàn) 其中還有一些錯(cuò)誤的語句的返回 包? 為 431 或者 432,所以就干純粹取個(gè) 450 (433~460都可以)

(這再看不懂就考慮換專業(yè)吧)

得到flag:

ISG{BLind_SQl_InJEcTi0N_DeTEcTEd}

?

9,特殊后門

乍一看,什么黑客后門的看起來挺嚇人,其實(shí)非常簡(jiǎn)單,

直接在 分組字節(jié)流 中搜索字符串? flag :

直接找到第 252 包:

然后看下一個(gè)包,在相同位置有一個(gè)字符 f

然后在接下來的每一個(gè)包的相同位置都有 一個(gè)字符,收集起來就是flag

flag{Icmp_backdoor_can_transfer-some_infomation}

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的bugku——分析(流量分析)题解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。