Print Stack Canary
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Zamislite situaciju u kojoj program ranjiv na prelivanje steka može izvršiti puts funkciju koja pokazuje na deo prelivanja steka. Napadač zna da je prvi bajt kanarija null bajt (\x00
) i da su ostali bajtovi kanarija nasumični. Tada napadač može kreirati preliv koji prepisuje stek sve do prvog bajta kanarija.
Zatim, napadač poziva puts funkcionalnost na sredini payload-a koja će odštampati celu kanariju (osim prvog null bajta).
Sa ovom informacijom napadač može pripremiti i poslati novi napad znajući kanariju (u istoj sesiji programa).
Očigledno, ova taktika je veoma ograničena jer napadač mora biti u mogućnosti da odštampa sadržaj svog payload-a da bi ekstrahovao kanariju i zatim biti u mogućnosti da kreira novi payload (u istoј sesiji programa) i pošalje pravi buffer overflow.
CTF primeri:
64 bita, ASLR omogućen ali bez PIE, prvi korak je popuniti preliv do bajta 0x00 kanarije da bi se zatim pozvao puts i otkrio ga. Sa kanarijom se kreira ROP gadget za pozivanje puts da se otkrije adresa puts iz GOT-a i ROP gadget za pozivanje system('/bin/sh')
32 bita, ARM, bez relro, kanarija, nx, bez pie. Preliv sa pozivom na puts da se otkrije kanarija + ret2lib pozivajući system
sa ROP lancem da se pop r0 (arg /bin/sh
) i pc (adresa sistema)
Sa arbitrarno čitanje kao što je ono koje pružaju formatne nizove može biti moguće otkriti kanariju. Proverite ovaj primer: https://ir0nstone.gitbook.io/notes/types/stack/canaries i možete pročitati o zloupotrebi formatnih nizova za čitanje proizvoljnih memorijskih adresa u:
Format StringsOva izazov zloupotrebljava na veoma jednostavan način formatni niz da pročita kanariju sa steka
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)