這篇文章主要介紹“Wireshark分析出攻擊者sql注入時查詢了哪些數據”,在日常操作中,相信很多人在Wireshark分析出攻擊者sql注入時查詢了哪些數據問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Wireshark分析出攻擊者sql注入時查詢了哪些數據”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
創(chuàng)新互聯云計算的互聯網服務提供商,擁有超過13年的服務器租用、成都服務器托管、云服務器、虛擬空間、網站系統(tǒng)開發(fā)經驗,已先后獲得國家工業(yè)和信息化部頒發(fā)的互聯網數據中心業(yè)務許可證。專業(yè)提供云主機、虛擬空間、域名注冊、VPS主機、云服務器、香港云服務器、免備案服務器等。
將流量包導入Wireshark
看著很亂,輸入url
通過瀏覽器請求使用的協議為http/https
,該流量包中只有http
,所以我們直接過濾出http
協議的數據包。
過濾出http請求的數據包
注入語句如下:
http://localhost:81/?id=1' and ascii(substring((select keyid from flag limit 0,1),1,1))=32#
由此可見攻擊者采用布爾盲注進行sql注入。
這里我們想到注入語句成功和失敗所返回的數據包一定是不同的。
觀察sql
注入響應包。
注入失敗響應內容:
注入成功響應內容:
由此我們可以想到是不是可以先將注入成功響應包過濾出來???那么我們應該以什么規(guī)則進行過濾呢,或者說以響應包哪個特征進行過濾呢???
我想到的過濾條件:
過濾出響應內容中有文章內容的所有響應包
根據響應包的長度進行過濾
注入失敗的響應包長度:
注入成功的響應包長度:
對于Wireshark的語法不是很熟悉,沒有找到怎么以內容過濾的語法,所以我這里以響應包的長度進行過濾。
Wireshark http過濾規(guī)則:
http.host==magentonotes.com http.host contains magentonotes.com //過濾經過指定域名的http數據包,這里的host值不一定是請求中的域名 http.response.code==302 //過濾http響應狀態(tài)碼為302的數據包 http.response==1 //過濾所有的http響應包 http.request==1 //過濾所有的http請求,貌似也可以使用http.request http.request.method==POST //wireshark過濾所有請求方式為POST的http請求包,注意POST為大寫 http.cookie contains guid //過濾含有指定cookie的http數據包 http.request.uri==”/online/setpoint” //過濾請求的uri,取值是域名后的部分 http.request.full_uri==” http://task.browser.#/online/setpoint” //過濾含域名的整個url則需要使用http.request.full_uri http.server contains “nginx” //過濾http頭中server字段含有nginx字符的數據包 http.content_type == “text/html” //過濾content_type是text/html的http響應、post包,即根據文件類型過濾http數據包 http.content_encoding == “gzip” //過濾content_encoding是gzip的http包 http.transfer_encoding == “chunked” //根據transfer_encoding過濾 http.content_length == 279 http.content_length_header == “279″ //根據content_length的數值過濾 http.server //過濾所有含有http頭中含有server字段的數據包 http.request.version == “HTTP/1.1″ //過濾HTTP/1.1版本的http包,包括請求和響應 http.response.phrase == “OK” //過濾http響應中的phrase
以content-Length
長度進行過濾,過濾語法為http.content_length == 366
所有注入成功的語句也可以從響應包查看到。
http://localhost:81/?id=1' and ascii(substring((select keyid from flag limit 0,1),1,1))=102#
這條sql語句的含義:第一個字符的ASCII碼為102
>>> print(chr(102)) # 將ASCII碼轉換為字符 >>> f
我怎么可能一個一個查看注入成功時字符對應的ASCII值是多少呢。
將上面過濾后的結果導出
使用正則過濾出注入語句和字符對應的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) # 字符對應的ASCII碼 url_list = re.findall(r"\[Request URI: (.*?)\]",i,re.S) # 注入的url if flag_number: print(url_list) number.append(flag_number[0])
這里注意注入語句成功的先后順序,也就是上圖圈出來的地方按順序排序(從第1個字符開始判斷,一直到38個字符),就是注入成功的執(zhí)行流程。
知道了字符對應的ASCII碼,反過來通過ASCII碼得出對應的字符即可。
最后跑出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注入時查詢了哪些數據”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯網站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
網頁名稱:Wireshark分析出攻擊者sql注入時查詢了哪些數據
URL地址:http://aaarwkj.com/article14/peegge.html
成都網站建設公司_創(chuàng)新互聯,為您提供Google、定制開發(fā)、網站建設、動態(tài)網站、建站公司、關鍵詞優(yōu)化
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯