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)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.
Büyütülmüş yazdırılmış yığın
Bir yığın taşması için savunmasız bir programın stack overflow'un bir kısmına işaret eden bir puts fonksiyonu ç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 sadece ilk baytını aşan bir taşma oluşturabilir.
Sonra, saldırgan yükün ortasında puts fonksiyonunu çağırır ve bu, kanaryayı (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ı ele geçirmek için yükünün içeriğini yazdırabilmesi gerekir ve ardından yeni bir yük oluşturup (aynı program oturumunda) gerçek tampon taşmasını göndermesi 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 çağırarak onu sızdırmaktır. Kanarya ile bir ROP aparatı oluşturulur, puts'u çağırarak GOT'dan 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 puts çağrısıyla bir taşma. ROP zinciri ile r0'ı (arg
/bin/sh
) ve pc'yi (system adresi) pop'lamak içinsystem
çağrısı.
Keyfi Okuma
Keyfi okuma ile format dizeleri tarafından sağlanan bir yöntemle 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)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.