# HTTP request smuggling Lab1 本題是 HTTP Request Smuggling (CL.TE) 檢測題,目標是確認伺服器是否存在 Content-Length + Transfer-Encoding (CL.TE) 混用的處理差異,進而可被利用來 smuggle(偷偷塞)另一個請求。 目標:讓你發送一個請求,後端誤解內容,導致下一個使用者的正常請求 / 被吃掉或解析錯誤 → 返回 404 Not Found。 > 注意事項: 雖然這個 lab 支援 HTTP/2,但本題解法必須使用 HTTP/1 的技術。 一樣先進入網站並攔截封包。 ![image](https://hackmd.io/_uploads/B17PzzXDex.png) ![image](https://hackmd.io/_uploads/SJ5I7zXvle.png) 這裡將 GET 改成 POST,因為 POST 才能帶有 Content-Length,而這正是我們要利用的第一個 header 來觸發 CL.TE。 ![image](https://hackmd.io/_uploads/SkSH4Mmvlg.png) 而前端伺服器會根據 Content-Length 處理請求,忽略 Transfer-Encoding,接著後端伺服器卻會根據 Transfer-Encoding: chunked 處理(並看到 0\r\n\r\n 是 chunk 結尾)。 ![image](https://hackmd.io/_uploads/ry8u8Gmwle.png) 最後那個 GET /404 就會被「偷偷」處理成下一個請求。 ![image](https://hackmd.io/_uploads/ryYPLzQPlx.png) 完成 payload 後,按照題目的目標去執行兩次。 ![image](https://hackmd.io/_uploads/BJDKPfQwgg.png) ![image](https://hackmd.io/_uploads/HyN5DfmPeg.png) ---