溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Wireshark分析出攻擊者sql注入時(shí)查詢了哪些數(shù)據(jù)

發(fā)布時(shí)間:2021-07-16 10:10:33 來源:億速云 閱讀:1280 作者:chen 欄目:網(wǎng)絡(luò)管理

這篇文章主要介紹“Wireshark分析出攻擊者sql注入時(shí)查詢了哪些數(shù)據(jù)”,在日常操作中,相信很多人在Wireshark分析出攻擊者sql注入時(shí)查詢了哪些數(shù)據(jù)問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Wireshark分析出攻擊者sql注入時(shí)查詢了哪些數(shù)據(jù)”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

0x001 題目

Wireshark分析出攻擊者sql注入時(shí)查詢了哪些數(shù)據(jù)

0x002 查看注入語句

將流量包導(dǎo)入Wireshark

Wireshark分析出攻擊者sql注入時(shí)查詢了哪些數(shù)據(jù)

看著很亂,輸入url通過瀏覽器請(qǐng)求使用的協(xié)議為http/https,該流量包中只有http,所以我們直接過濾出http協(xié)議的數(shù)據(jù)包。

過濾出http請(qǐng)求的數(shù)據(jù)包

Wireshark分析出攻擊者sql注入時(shí)查詢了哪些數(shù)據(jù)

注入語句如下:

http://localhost:81/?id=1' and ascii(substring((select keyid from flag limit 0,1),1,1))=32#

由此可見攻擊者采用布爾盲注進(jìn)行sql注入。

0x003 觀察響應(yīng)包

這里我們想到注入語句成功和失敗所返回的數(shù)據(jù)包一定是不同的。

觀察sql注入響應(yīng)包。

注入失敗響應(yīng)內(nèi)容:
Wireshark分析出攻擊者sql注入時(shí)查詢了哪些數(shù)據(jù)

注入成功響應(yīng)內(nèi)容:
Wireshark分析出攻擊者sql注入時(shí)查詢了哪些數(shù)據(jù)

由此我們可以想到是不是可以先將注入成功響應(yīng)包過濾出來???那么我們應(yīng)該以什么規(guī)則進(jìn)行過濾呢,或者說以響應(yīng)包哪個(gè)特征進(jìn)行過濾呢???

我想到的過濾條件:

過濾出響應(yīng)內(nèi)容中有文章內(nèi)容的所有響應(yīng)包

根據(jù)響應(yīng)包的長(zhǎng)度進(jìn)行過濾

注入失敗的響應(yīng)包長(zhǎng)度:
Wireshark分析出攻擊者sql注入時(shí)查詢了哪些數(shù)據(jù)

注入成功的響應(yīng)包長(zhǎng)度:
Wireshark分析出攻擊者sql注入時(shí)查詢了哪些數(shù)據(jù)

對(duì)于Wireshark的語法不是很熟悉,沒有找到怎么以內(nèi)容過濾的語法,所以我這里以響應(yīng)包的長(zhǎng)度進(jìn)行過濾。

Wireshark http過濾規(guī)則:

http.host==magentonotes.com
http.host contains magentonotes.com
//過濾經(jīng)過指定域名的http數(shù)據(jù)包,這里的host值不一定是請(qǐng)求中的域名

http.response.code==302
//過濾http響應(yīng)狀態(tài)碼為302的數(shù)據(jù)包

http.response==1
//過濾所有的http響應(yīng)包

http.request==1
//過濾所有的http請(qǐng)求,貌似也可以使用http.request

http.request.method==POST
//wireshark過濾所有請(qǐng)求方式為POST的http請(qǐng)求包,注意POST為大寫

http.cookie contains guid
//過濾含有指定cookie的http數(shù)據(jù)包

http.request.uri==”/online/setpoint”
//過濾請(qǐng)求的uri,取值是域名后的部分

http.request.full_uri==” http://task.browser.#/online/setpoint”
//過濾含域名的整個(gè)url則需要使用http.request.full_uri

http.server contains “nginx”
//過濾http頭中server字段含有nginx字符的數(shù)據(jù)包

http.content_type == “text/html”
//過濾content_type是text/html的http響應(yīng)、post包,即根據(jù)文件類型過濾http數(shù)據(jù)包

http.content_encoding == “gzip”
//過濾content_encoding是gzip的http包

http.transfer_encoding == “chunked”
//根據(jù)transfer_encoding過濾

http.content_length == 279
http.content_length_header == “279″
//根據(jù)content_length的數(shù)值過濾

http.server
//過濾所有含有http頭中含有server字段的數(shù)據(jù)包

http.request.version == “HTTP/1.1″
//過濾HTTP/1.1版本的http包,包括請(qǐng)求和響應(yīng)

http.response.phrase == “OK”
//過濾http響應(yīng)中的phrase

content-Length長(zhǎng)度進(jìn)行過濾,過濾語法為http.content_length == 366

Wireshark分析出攻擊者sql注入時(shí)查詢了哪些數(shù)據(jù)

所有注入成功的語句也可以從響應(yīng)包查看到。

http://localhost:81/?id=1' and ascii(substring((select keyid from flag limit 0,1),1,1))=102#

這條sql語句的含義:第一個(gè)字符的ASCII碼為102

>>> print(chr(102))  # 將ASCII碼轉(zhuǎn)換為字符
>>> f

我怎么可能一個(gè)一個(gè)查看注入成功時(shí)字符對(duì)應(yīng)的ASCII值是多少呢。

Wireshark分析出攻擊者sql注入時(shí)查詢了哪些數(shù)據(jù)

0x004 腳本編寫

將上面過濾后的結(jié)果導(dǎo)出

Wireshark分析出攻擊者sql注入時(shí)查詢了哪些數(shù)據(jù)

使用正則過濾出注入語句和字符對(duì)應(yīng)的ASCII碼

import re

number = []
with open("aa.txt","r",encoding="utf-8") as f:
    for i in f.readlines():
        flag_number = re.findall(r"\[Request URI: .*?=(\d+)%23\]",i,re.S) # 字符對(duì)應(yīng)的ASCII碼
        url_list = re.findall(r"\[Request URI: (.*?)\]",i,re.S)  # 注入的url
        if flag_number:
            print(url_list)
            number.append(flag_number[0])

Wireshark分析出攻擊者sql注入時(shí)查詢了哪些數(shù)據(jù)

這里注意注入語句成功的先后順序,也就是上圖圈出來的地方按順序排序(從第1個(gè)字符開始判斷,一直到38個(gè)字符),就是注入成功的執(zhí)行流程。

知道了字符對(duì)應(yīng)的ASCII碼,反過來通過ASCII碼得出對(duì)應(yīng)的字符即可。

最后跑出flag

import re

number = []
with open("aa.txt","r",encoding="utf-8") as f:
    for i in f.readlines():
        flag_number = re.findall(r"\[Request URI: .*?=(\d+)%23\]",i,re.S)
        url_list = re.findall(r"\[Request URI: (.*?)\]",i,re.S)
        if flag_number:
            print(url_list)
            number.append(flag_number[0])

print(number)
flag = ''
for i in number:
    flag +=chr(int(i))
print(flag)

Wireshark分析出攻擊者sql注入時(shí)查詢了哪些數(shù)據(jù)

到此,關(guān)于“Wireshark分析出攻擊者sql注入時(shí)查詢了哪些數(shù)據(jù)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI