利用Fiddler攔截接口請求并篡改資料
近期在測試一個下單的項目,出于安全角度考慮,測試了一個場景,那就是利用工具對接口進行攔截并篡改資料。将接口一攔截并篡改資料後,發現收貨滿滿。開發默默接受了我的建議,并對代碼進行了修改。
對于fiddler的操作,網上文章很多,該方法一查就很多,我還将此寫出來,是記錄下自己的實踐時刻。
攔截HTTP請求
使用Fiddler進行HTTP斷點調試是fiddler一強大和實用的工具之一。通過設定斷點,Fiddler可以做到:
①修改HTTP請求頭資訊。例如修改請求頭的UA,Cookie,Referer資訊,通過“僞造”相應資訊達到相應的目的(調試,模拟使用者真實請求等)。
②構造請求資料,突破表單的限制,随意送出資料。避免頁面js和表單限制影響相關調試。
③攔截響應資料,修改響應實體。
設定斷點共有兩種方式:
①fiddler菜單欄->rules->automatic Breakpoints->選擇斷點方式,這種方式下設定的斷點會對之後的所有HTTP請求有效。有兩個斷點位置:
1)before response。也就是發送請求之後,但是Fiddler代理中轉之前,這時可以修改請求的資料。
2)after response。也就是伺服器響應之後,但是在Fiddler将響應中轉給用戶端之前。這時可以修改響應的結果。
3)如何消除指令呢?點選Rules->Automatic Breakpoint->Disabled
如下圖所示:
②指令行設定斷點
1)bpu在請求開始時中斷
2)bpafter在響應到達時中斷
3)bps中斷HTTP響應狀态為指定字元的全部session響應
4)bpv/bpm中斷指定請求方式的全部session響應
示例一:
指令行輸入:bpm www.baidu.cm(攔截www.baidu.com請求)
解除攔截:輸入指令:bpu
示意圖如下所示:
示例二:
指令行輸入:bpuafter www.baidu.cm(攔截www.baidu.cm傳回值)
解除攔截:輸入指令:bpuafter
結合實際操作,打開fiddler,去攔截送出訂單的那個接口,設定成:rules->automatic Breakpoints->before response,在頁面上送出訂單,攔截效果如下所示,頁面中一直在加載
修改資料
攔截HTTP請求後修改方式有兩種,一種是臨時修改,即結果隻對當次請求有效,另一種是永久修改,可以通過urlreplace指令實作。
①臨時修改請求
即在fiddler中執行Inspectors->WebForms,修改請求變量參數後執行Run to Completion,伺服器傳回新的請求結果
②永久性修改請求
1)指令行設定修改規則,修改請求:urlreplace 舊請求值 新請求值
fiddler指令行輸入:urlreplace uuid=103 uuid=105
其中uuid是請求參數,輸入指令後回車即可,新的請求設定成功,除非釋放請求,否則請求值不變,釋放請求指令urlreplace
2)腳本中修改規則,打開腳本方式:fiddler執行Rules->Customize Rules
在fiddler中修改訂單資料後,點選Run to Completion按鈕,實作資料篡改,頁面中的資料修改成功,這裡就不上圖了,嘿嘿