# Unicode Injection {{#include ../../banners/hacktricks-training.md}} ## Introduction इस पर निर्भर करते हुए कि बैक-एंड/फ्रंट-एंड **अजीब unicode वर्णों** को प्राप्त करते समय कैसे व्यवहार करता है, एक हमलावर **सुरक्षाओं को बायपास** करने और **मनमाने वर्णों को इंजेक्ट** करने में सक्षम हो सकता है, जिन्हें **इंजेक्शन कमजोरियों** जैसे XSS या SQLi का दुरुपयोग करने के लिए उपयोग किया जा सकता है। ## Unicode Normalization Unicode सामान्यीकरण तब होता है जब **unicode वर्णों को ascii वर्णों में सामान्यीकृत** किया जाता है। इस प्रकार की कमजोरी का एक सामान्य परिदृश्य तब होता है जब सिस्टम **उपयोगकर्ता के इनपुट को** किसी न किसी तरह **संशोधित** करता है **जांचने के बाद**। उदाहरण के लिए, कुछ भाषाओं में **इनपुट को अपरकेस या लोअरकेस** बनाने के लिए एक साधारण कॉल दिए गए इनपुट को सामान्यीकृत कर सकता है और **unicode ASCII में परिवर्तित** हो जाएगा, जिससे नए वर्ण उत्पन्न होंगे।\ अधिक जानकारी के लिए देखें: {{#ref}} unicode-normalization.md {{#endref}} ## `\u` to `%` Unicode वर्ण आमतौर पर **`\u` उपसर्ग** के साथ प्रदर्शित होते हैं। उदाहरण के लिए, वर्ण `㱋` है `\u3c4b`([यहां जांचें](https://unicode-explorer.com/c/3c4B)). यदि एक बैकएंड **`\u` उपसर्ग को `%` में परिवर्तित** करता है, तो परिणामी स्ट्रिंग `%3c4b` होगी, जिसे URL डिकोड किया गया है: **`<4b`**। और, जैसा कि आप देख सकते हैं, एक **`<` वर्ण इंजेक्ट किया गया है**।\ यदि बैकएंड कमजोर है तो आप इस तकनीक का उपयोग **किसी भी प्रकार के वर्ण को इंजेक्ट** करने के लिए कर सकते हैं।\ आपको आवश्यक वर्ण खोजने के लिए [https://unicode-explorer.com/](https://unicode-explorer.com/) देखें। यह कमजोरी वास्तव में एक शोधकर्ता द्वारा पाई गई एक कमजोरी से आती है, अधिक गहन व्याख्या के लिए देखें [https://www.youtube.com/watch?v=aUsAHb0E7Cg](https://www.youtube.com/watch?v=aUsAHb0E7Cg) ## Emoji Injection बैक-एंड कुछ अजीब तरीके से व्यवहार करते हैं जब वे **इमोजी प्राप्त करते हैं**। यही [**इस लेख**](https://medium.com/@fpatrik/how-i-found-an-xss-vulnerability-via-using-emojis-7ad72de49209) में हुआ, जहां शोधकर्ता ने एक पेलोड जैसे: `💋img src=x onerror=alert(document.domain)//💛` के साथ XSS प्राप्त करने में सफल रहा। इस मामले में, त्रुटि यह थी कि सर्वर ने दुर्भावनापूर्ण वर्णों को हटाने के बाद **Windows-1252 से UTF-8 में UTF-8 स्ट्रिंग को परिवर्तित** किया (बुनियादी रूप से इनपुट एन्कोडिंग और एन्कोडिंग रूपांतरण असंगत थे)। फिर यह एक उचित < नहीं देता, केवल एक अजीब unicode: `‹`\ ``तो उन्होंने इस आउटपुट को लिया और **अब UTF-8 से ASCII में फिर से परिवर्तित किया**। इसने `‹` को ` < ` में **सामान्यीकृत** किया, यही कारण है कि यह प्रणाली पर एक्सप्लॉइट काम कर सका।\ यह क्या हुआ: ```php