Print Stack Canary
Reading time: 3 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Büyütülmüş yazdırılmış yığın
Bir yığın taşması için kırılgan olan bir programın stack overflow'un bir kısmına işaret eden bir puts fonksiyonunu çalıştırabileceği bir durumu hayal edin. Saldırgan, kanaryanın ilk baytının bir null baytı olduğunu (\x00
) ve kanaryanın geri kalanının rastgele baytlar olduğunu bilir. Ardından, saldırgan kanaryanın ilk baytına kadar yığını aşan bir taşma oluşturabilir.
Sonra, saldırgan yükün ortasında puts fonksiyonunu çağırır ve bu, kanaryanın tümünü (ilk null bayt hariç) yazdırır.
Bu bilgiyle saldırgan, kanaryayı (aynı program oturumunda) bilerek yeni bir saldırı oluşturup gönderebilir.
Açıkça, bu taktik çok kısıtlıdır çünkü saldırganın kanaryayı sızdırmak için yükünün içeriğini yazdırabilmesi ve ardından yeni bir yük oluşturup (aynı program oturumunda) gerçek tampon taşmasını gönderebilmesi gerekir.
CTF örnekleri:
- https://guyinatuxedo.github.io/08-bof_dynamic/csawquals17_svc/index.html
- 64 bit, ASLR etkin ama PIE yok, ilk adım kanaryanın 0x00 baytına kadar bir taşma doldurmak ve ardından puts'u çağırarak sızdırmaktır. Kanarya ile bir ROP aparatı oluşturulur, puts'u çağırarak GOT'tan puts'un adresini sızdırır ve ardından
system('/bin/sh')
çağıran bir ROP aparatı. - https://guyinatuxedo.github.io/14-ret_2_system/hxp18_poorCanary/index.html
- 32 bit, ARM, relro yok, kanarya, nx, pie yok. Kanaryayı sızdırmak için üzerine puts çağrısı ile taşma ve r0'ı (arg
/bin/sh
) ve pc'yi (system adresi) pop eden bir ROP zinciri ilesystem
çağıran ret2lib.
Keyfi Okuma
Format dizeleri tarafından sağlanan bir keyfi okuma ile kanaryayı sızdırmak mümkün olabilir. Bu örneğe bakın: https://ir0nstone.gitbook.io/notes/types/stack/canaries ve keyfi bellek adreslerini okumak için format dizelerini kötüye kullanma hakkında okuyabilirsiniz:
- https://guyinatuxedo.github.io/14-ret_2_system/asis17_marymorton/index.html
- Bu zorluk, yığından kanaryayı okumak için çok basit bir şekilde bir format dizesini kötüye kullanıyor.
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.