# HTTP request smuggling Lab4
本題是 TE.CL(Transfer-Encoding + Content-Length)漏洞,目標是把 carlos 幹掉。
重點:
- 前端支持 chunked,後端不支持 chunked。
所以一樣先進入網站並攔截封包。


這裡直接去 admin 都跟上題一樣需要 cookie。

所以我們在請求中加上 localhost 。

成功了,接著是砍掉目標使用者,從 admin 的頁面可以看到砍掉使用者的連結是啥,跟上題一樣。
```
/admin/delete?username=carlos
```
所以我們丟回請求中在試試。



:::info
### 跟 CL.TE 的差異在哪?
在於 `Content-Length` 的長度:
- CL.TE 是「故意寫錯」的短長度,少於實際 chunked body 長度,裡包含完整的 smuggled request,因為只看 Content-Length 讀指定長度,後端用 Transfer-Encoding 解析 chunked body,讀到真正的結尾,後端會把 Content-Length 之後剩下的部分當成新請求。
- TE.CL 是「精確」的短長度,包括整個 chunked body,不會解析 chunked,後端因為沒 chunked 支援,只看到一部分資料,剩下當作下一個獨立請求。
| 漏洞類型 | Content-Length 設定 | Transfer-Encoding 設定 |smuggled request 在哪 |
| -------- | -------- | -------- | -------- |
| CL.TE | 故意短(少於實際 chunked body) | 有,chunked | chunked body 裡面 |
| TE.CL | 精準(包含整個 chunked body) | 有,chunked | Content-Length 結尾後 |
### 換比喻:
- CL.TE 是前端「只掐頭不截尾」,後端「拆包拆到底」。
- TE.CL 是前端「拆完整包」,後端「只看包裝盒標籤」。
:::
---