# Unicode Injection {{#include ../../banners/hacktricks-training.md}} ## Introduction Kulingana na jinsi back-end/front-end inavyofanya kazi wakati in **pata wahusika wa unicode wa ajabu**, mshambuliaji anaweza kuwa na uwezo wa **kupita ulinzi na kuingiza wahusika wa kiholela** ambao wanaweza kutumika ku **dhulumu udhaifu wa kuingiza** kama XSS au SQLi. ## Unicode Normalization Unicode normalization inatokea wakati **wahusika wa unicode wanapohaririwa kuwa wahusika wa ascii**. Moja ya hali ya kawaida ya aina hii ya udhaifu inatokea wakati mfumo un **abadilisha** kwa namna fulani **ingizo** la mtumiaji **baada ya kulikagua**. Kwa mfano, katika lugha zingine, simu rahisi ya kufanya **ingizo kuwa kubwa au dogo** inaweza kuhariri ingizo lililotolewa na **unicode itabadilishwa kuwa ASCII** ikizalisha wahusika wapya.\ Kwa maelezo zaidi angalia: {{#ref}} unicode-normalization.md {{#endref}} ## `\u` to `%` Wahusika wa unicode kawaida huwakilishwa na **`\u` prefix**. Kwa mfano, wahusika `㱋` ni `\u3c4b`([angalia hapa](https://unicode-explorer.com/c/3c4B)). Ikiwa backend **inabadilisha** prefix **`\u` kuwa `%`**, string inayotokana itakuwa `%3c4b`, ambayo imefutwa URL ni: **`<4b`**. Na, kama unavyoona, wahusika **`<` umeingizwa**.\ Unaweza kutumia mbinu hii ku **ingiza aina yoyote ya wahusika** ikiwa backend ina udhaifu.\ Angalia [https://unicode-explorer.com/](https://unicode-explorer.com/) ili kupata wahusika unahitaji. Udhaifu huu kwa kweli unatokana na udhaifu ambao mtafiti alipata, kwa maelezo ya kina angalia [https://www.youtube.com/watch?v=aUsAHb0E7Cg](https://www.youtube.com/watch?v=aUsAHb0E7Cg) ## Emoji Injection Back-ends fulani zinafanya kazi kwa njia ya ajabu wanap **pata emojis**. Hivyo ndivyo ilivyotokea katika [**hiki andiko**](https://medium.com/@fpatrik/how-i-found-an-xss-vulnerability-via-using-emojis-7ad72de49209) ambapo mtafiti alifanikiwa kufikia XSS kwa payload kama: `💋img src=x onerror=alert(document.domain)//💛` Katika kesi hii, kosa lilikuwa kwamba server baada ya kuondoa wahusika wa uharibifu **ilibadilisha string ya UTF-8 kutoka Windows-1252 hadi UTF-8** (kimsingi uandishi wa ingizo na kubadilisha kutoka uandishi vilikuwa tofauti). Kisha hii haisababishi < sahihi bali unicode ya ajabu: `‹`\ ``Hivyo walichukua matokeo haya na **kubadilisha tena sasa kutoka UTF-8 hadi ASCII**. Hii **ilihariri** `‹` kuwa ` <` hivi ndivyo exploit ilivyoweza kufanya kazi kwenye mfumo huo.\ Hii ndiyo ilivyotokea: ```php