Format Strings - Arbitrary Read Example
AWS Hacking'i öğrenin ve uygulayın: HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve uygulayın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
İkili Okumaya Başla
Kod
Derleyin:
Sızma
Ofset 11'dir çünkü birkaç As ayarlayarak ve bir döngü ile 0'dan 50'ye kadar ofsetleri brute-force ederek, ofset 11'de ve 5 ekstra karakterle (bizim durumumuzda borular
|
) tam bir adresi kontrol etmek mümkündür.Adresin tamamı 0x4141414141414141 olduğunda
%11$p
'yi kullanarak dolgu ekledim.Format dizesi yükü, adresin ÖNCESİNDE olmalıdır çünkü printf, bir null bayta kadar okuma yapmayı durdurur, bu yüzden adresi gönderir ve ardından format dizesini gönderirsek, printf asla format dizesine ulaşmayacak çünkü bir null bayt bulunacaktır.
Seçilen adres 0x00400000'dir çünkü bu, ikili dosyanın başladığı yerdir (PIE yok)
Derleyin:
Stack'ten okuma
stack_password
yerel bir değişken olduğundan dolayı stack'te saklanacaktır, bu yüzden sadece printf'i kötüye kullanarak stack'in içeriğini göstermek yeterli olacaktır. Bu, yığının içerisindeki şifreleri sızdırmak için ilk 100 pozisyonu sızdırmak için bir saldırıdır:
Resimde, şifrenin yığın içinde 10.
konumdan sızdırılabileceği görülebilir:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2815339644-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FKXYG6TIGtXXE4WZnfup9%252Fuploads%252Fgit-blob-545fcdfaf85cd96714bae462c037fc088c6f8bb4%252Fimage%2520%281234%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=c1232455&sv=1)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2815339644-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FKXYG6TIGtXXE4WZnfup9%252Fuploads%252Fgit-blob-49c6c459edceb803ac56d89f84335da98d3f277f%252Fimage%2520%281233%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=d6afe33b&sv=1)
Veri Okuma
Aynı saldırıyı çalıştırarak ancak %s
yerine %p
kullanarak yığından bir yığın adresi sızdırmak mümkündür ve bu %25$p
konumunda gerçekleşir. Dahası, sızdırılan adresi (0xaaaab7030894
) o işlemde bellekte şifrenin konumuyla karşılaştırarak adres farkını elde edebiliriz:
Şimdi yığında bir adresi kontrol etmek ve ikinci format dizesi güvenlik açığından erişmek için nasıl kontrol edileceğini bulma zamanı:
Ve try 14'te kullanılan geçişle bir adresi kontrol edebileceğimizi görmek mümkündür:
Sızma
AWS Hacking'ı öğrenin ve uygulayın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)
GCP Hacking'ı öğrenin ve uygulayın:
HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
Last updated