# Unicode Injection {{#include ../../banners/hacktricks-training.md}} ## Introduction Afhangend van hoe die back-end/front-end optree wanneer dit **weird unicode karakters ontvang**, mag 'n aanvaller in staat wees om **beskermings te omseil en arbitrêre karakters in te spuit** wat gebruik kan word om **inspuitingskwesbaarhede te misbruik** soos XSS of SQLi. ## Unicode Normalization Unicode normalisering vind plaas wanneer **unicode karakters genormaliseer word na ascii karakters**. Een algemene scenario van hierdie tipe kwesbaarheid gebeur wanneer die stelsel **die invoer** van die gebruiker **op 'n of ander manier aanpas** **nadat dit nagegaan is**. Byvoorbeeld, in sommige tale kan 'n eenvoudige oproep om die **invoer hoofletters of kleinletters te maak** die gegewe invoer normaliseer en die **unicode sal in ASCII omgeskakel word**, wat nuwe karakters genereer.\ Vir meer inligting, kyk: {{#ref}} unicode-normalization.md {{#endref}} ## `\u` na `%` Unicode karakters word gewoonlik verteenwoordig met die **`\u` voorvoegsel**. Byvoorbeeld, die karakter `㱋` is `\u3c4b`([kyk dit hier](https://unicode-explorer.com/c/3c4B)). As 'n backend **die voorvoegsel** **`\u` in `%` omskakel**, sal die resulterende string `%3c4b` wees, wat URL-dekodeer is: **`<4b`**. En, soos jy kan sien, is 'n **`<` karakter ingespuit**.\ Jy kan hierdie tegniek gebruik om **enige soort karakter in te spuit** as die backend kwesbaar is.\ Kyk [https://unicode-explorer.com/](https://unicode-explorer.com/) om die karakters te vind wat jy nodig het. Hierdie kwesbaarheid kom eintlik van 'n kwesbaarheid wat 'n navorser gevind het, vir 'n meer diepgaande verduideliking, kyk [https://www.youtube.com/watch?v=aUsAHb0E7Cg](https://www.youtube.com/watch?v=aUsAHb0E7Cg) ## Emoji Injection Back-ends gedra soms vreemd wanneer hulle **emojis ontvang**. Dit is wat gebeur het in [**hierdie skrywe**](https://medium.com/@fpatrik/how-i-found-an-xss-vulnerability-via-using-emojis-7ad72de49209) waar die navorser daarin geslaag het om 'n XSS te bereik met 'n payload soos: `💋img src=x onerror=alert(document.domain)//💛` In hierdie geval was die fout dat die bediener, nadat dit die kwaadwillige karakters verwyder het, **die UTF-8 string van Windows-1252 na UTF-8 omgeskakel het** (basies het die invoer kodering en die omskakeling van kodering nie ooreengestem nie). Dit gee dan nie 'n behoorlike < nie, net 'n vreemde unicode een: `‹`\ ``So het hulle hierdie uitvoer geneem en **weer van UTF-8 na ASCII omgeskakel**. Dit het die `‹` na ` <` genormaliseer, dit is hoe die eksploit op daardie stelsel kon werk.\ Dit is wat gebeur het: ```php