20 lines
2.8 KiB
Markdown

{{#include ../../banners/hacktricks-training.md}}
## CONNECT विधि
Go प्रोग्रामिंग भाषा में, HTTP अनुरोधों को संभालने के लिए एक सामान्य प्रथा, विशेष रूप से `net/http` पुस्तकालय का उपयोग करते समय, अनुरोध पथ को एक मानकीकृत प्रारूप में स्वचालित रूप से परिवर्तित करना है। इस प्रक्रिया में शामिल हैं:
- `/` के साथ समाप्त होने वाले पथ (`/`) जैसे `/flag/` को उनके बिना स्लैश वाले समकक्ष, `/flag` पर पुनर्निर्देशित किया जाता है।
- `/../flag` जैसे निर्देशिका ट्रैवर्सल अनुक्रमों वाले पथों को सरल बनाया जाता है और `/flag` पर पुनर्निर्देशित किया जाता है।
- `/flag/.` के रूप में एक ट्रेलिंग अवधि वाले पथों को भी साफ पथ `/flag` पर पुनर्निर्देशित किया जाता है।
हालांकि, `CONNECT` विधि के उपयोग के साथ एक अपवाद देखा जाता है। अन्य HTTP विधियों के विपरीत, `CONNECT` पथ मानकीकरण प्रक्रिया को सक्रिय नहीं करता है। यह व्यवहार संरक्षित संसाधनों तक पहुँचने के लिए एक संभावित मार्ग खोलता है। `curl` में `--path-as-is` विकल्प के साथ `CONNECT` विधि का उपयोग करके, कोई मानक पथ मानकीकरण को बायपास कर सकता है और संभावित रूप से प्रतिबंधित क्षेत्रों तक पहुँच सकता है।
निम्नलिखित कमांड इस व्यवहार का लाभ उठाने का तरीका प्रदर्शित करती है:
```bash
curl --path-as-is -X CONNECT http://gofs.web.jctf.pro/../flag
```
[https://github.com/golang/go/blob/9bb97ea047890e900dae04202a231685492c4b18/src/net/http/server.go\#L2354-L2364](https://github.com/golang/go/blob/9bb97ea047890e900dae04202a231685492c4b18/src/net/http/server.go#L2354-L2364)
{{#include ../../banners/hacktricks-training.md}}