如何抓包定位問題?
網絡層抓包用wireshark,http抓包用burpsuite,二者所有界面化的操作系統都有,windows,linux,mac。下面幾個回答網上抄的一模一樣,也是醉了,一看就沒真正用過,把我氣出來了。burp雖然在win下可以被fiddler代替,但是ui設計我更欣賞burp,純屬個人愛好。linux和mac下的fiddler安裝和使用上都不好,畢竟.net開發,相比較java開發的burp更具有跨平臺優勢。
使用具體方法細節就不說了,玩抓包都是搞技術的,谷歌上搜索教程到處都是。題主說的定位問題范圍太大,不好回答,直接說說心得吧。
1、wireshark其實也能看到http的數據,有時候簡單的問題排查,用wireshark足夠。比如三次握手有沒有建立起來,是否存在丟包,比如http內容是否符合預期,中間有沒有被篡改。有個比較常用的篩選規則可以模糊匹配到http里面的內容:
tcp contains "toutiao.com"
2、當然很多時候用wireshark不是看http,主要看ISO四層的數據包是怎么通信的。還有一個常用操作,追蹤一個數據包的流,甭管TCP,UDP,都能自動化篩選出來
3、https在wireshark下就無能為力,而現在不管是web還是app抓包,基本都是https,輪到burp上場了。burp能看https的原理類似于中間人攻擊,只不過是咱主動設置的,技術沒有好壞,關鍵是使用技術的人。瀏覽器或者手機導入并且信任burp公鑰,讓客戶端相信burp就是目標站點,正常點擊后,burp代理攔截到https加密的數據,解密展示到burp前端,然后burp充當客戶端,與服務端交互,再加密發送給真實的目標站點。
4、burp支持對抓取的http/https請求報文修改進行重放,也支持攔截修改后進行發送,看需求,驗證那種圖片或者短信驗證碼一次性接口還是用攔截模式吧。下面是repeater修改請求看響應的地方,很方便:
5、burp甚至還能用作api接口的壓測工具,可以設置發送線程進行,并發的payload可以是原始的,也可以用字典規則進行fuzz。功能反正很強大,有些我都沒用過。下面的圖設置線程的:
以上都是一個字一個字手機打出來的,電腦截了幾張圖,說這些主要還是要給看的人有個直觀感受。解決bug最關鍵當然是復現bug,而且網絡問題又特別復雜,有時候能復現有時候不能復現,搞技術的都是無神論者,出問題必有原因。曾經出現過只有很少的客戶會出現問題,絕大多數客戶一切正常,我在海量抓包文件中找了三天三夜的bug,定位出問題的心情還是很激動的。