* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
**Bu, şu özetin bir özeti:** [**https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/**](https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/). Daha fazla ayrıntı için bakın (resimler oradan alınmıştır).
Unicode normalizasyonu, karakterlerin farklı ikili temsillerinin aynı ikili değere standart hale getirildiği bir süreçtir. Bu süreç, programlama ve veri işleme süreçlerinde dizilerle uğraşırken hayati öneme sahiptir. Unicode standardı iki tür karakter eşdeğerliği tanımlar:
**Dört Unicode normalizasyon algoritması** vardır: NFC, NFD, NFKC ve NFKD. Her algoritma, kanonik ve uyumluluk normalizasyon tekniklerini farklı şekilde kullanır. Daha derinlemesine anlamak için bu teknikleri [Unicode.org](https://unicode.org/) üzerinde keşfedebilirsiniz.
* **Kod Noktaları ve Karakterler**: Unicode'da, her karakter veya sembol, "kod noktası" olarak bilinen bir sayısal değerle ilişkilendirilir.
* **Bayt Temsili**: Kod noktası (veya karakter), bellekte bir veya daha fazla baytla temsil edilir. Örneğin, İngilizce konuşan ülkelerde yaygın olan LATIN-1 karakterleri bir bayt kullanılarak temsil edilir. Ancak, daha büyük bir karakter kümesine sahip diller, temsil için daha fazla bayt gerektirir.
* **Kodlama**: Bu terim, karakterlerin bir dizi bayta nasıl dönüştürüldüğünü ifade eder. UTF-8, ASCII karakterlerinin bir bayt kullanılarak temsil edildiği yaygın bir kodlama standardıdır ve diğer karakterler için dört bayta kadar kullanılır.
* **Veri İşleme**: Veri işleyen sistemler, bayt akışını doğru şekilde karakterlere dönüştürmek için kullanılan kodlamayı bilmelidir.
* **UTF Çeşitleri**: UTF-8'in yanı sıra, UTF-16 (en az 2 bayt, en fazla 4 bayt) ve UTF-32 (tüm karakterler için 4 bayt kullanımı) gibi diğer kodlama standartları bulunmaktadır.
Bu kavramları etkili bir şekilde anlamak, Unicode'ın karmaşıklığından ve çeşitli kodlama yöntemlerinden kaynaklanabilecek potansiyel sorunları etkili bir şekilde ele almak için önemlidir.
**Unicode eşdeğer karakterlerin bir listesine buradan ulaşabilirsiniz:** [https://appcheck-ng.com/wp-content/uploads/unicode\_normalization.html](https://appcheck-ng.com/wp-content/uploads/unicode\_normalization.html) ve [https://0xacb.com/normalization\_table](https://0xacb.com/normalization\_table)
Eğer bir web uygulamasında geriye yansıtılan bir değer bulabilirseniz, **'KELVİN İŞARETİ' (U+0212A)** gönderebilirsiniz ki bu da **"K" olarak normalize edilir** (bu şekilde gönderebilirsiniz `%e2%84%aa`). Eğer geriye bir "K" yansıtılıyorsa, bir tür **Unicode normalizasyonu** gerçekleştiriliyor demektir.
Diğer **örnek**: `%F0%9D%95%83%E2%85%87%F0%9D%99%A4%F0%9D%93%83%E2%85%88%F0%9D%94%B0%F0%9D%94%A5%F0%9D%99%96%F0%9D%93%83`**unicode**'den sonra `Leonishan` haline gelir.
Kullanıcı girdisiyle SQL sorguları oluşturmak için karakter `'` kullanan bir web sayfasını hayal edin. Bu web sitesi, güvenlik önlemi olarak, kullanıcı girdisindeki tüm `'` karakterlerini **siler**, ancak bu silme işleminden sonra ve sorgunun oluşturulmadan **önce**, kullanıcı girdisini **Unicode** kullanarak **normalize** eder.
Bu durumda, kötü niyetli bir kullanıcı, `' (0x27)`'ye eşdeğer farklı bir Unicode karakteri ekleyebilir, örneğin `%ef%bc%87`, girdi normalize edildiğinde tek tırnak oluşturulur ve bir **SQL Injection açığı** ortaya çıkar:
Arka uç, **kullanıcı girişini bir regex ile kontrol ederken**, **girişin regex için normalize edildiği** ancak **kullanıldığı yer için normalize edilmediği** olabilir. Örneğin, bir Açık Yönlendirme veya SSRF'de regex, gönderilen URL'yi **normalize edebilir** ancak **olduğu gibi erişebilir**.
[**recollapse**](https://github.com/0xacb/recollapse) aracı, arka ucu fuzzlemek için girişin varyasyonlarını oluşturmayı sağlar. Daha fazla bilgi için **github** ve bu [**gönderiye**](https://0xacb.com/2022/11/21/recollapse) bakın.
<summary><strong>Sıfırdan başlayarak AWS hacklemeyi</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile öğrenin!</strong></summary>
* **Şirketinizi HackTricks'te reklamınızı görmek veya HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da takip edin.
* **Hacking püf noktalarınızı paylaşarak** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek katkıda bulunun.