5.9 KiB
WWW2Exec - __malloc_hook & __free_hook
AWS hackleme konusunda sıfırdan kahramana öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!
HackTricks'ı desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamını görmek istiyorsanız veya HackTricks'i PDF olarak indirmek istiyorsanız ABONELİK PLANLARINI kontrol edin!
- Resmi PEASS & HackTricks ürünlerini alın
- PEASS Ailesi'ni keşfedin, özel NFT'lerimiz koleksiyonumuz
- Katılın 💬 Discord grubuna veya telegram grubuna veya bizi Twitter 🐦 @hacktricks_live** takip edin.**
- Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın.
Malloc Hook
Resmi GNU sitesinde belirtildiği gibi, __malloc_hook
değişkeni, malloc()
çağrıldığında libc kütüphanesinin veri bölümünde depolanan bir işlevin adresine işaret eden bir işaretçidir. Bu nedenle, bu adres örneğin bir One Gadget ile üzerine yazılırsa ve malloc
çağrılırsa, One Gadget çağrılacaktır.
Malloc'ı çağırmak için programın onu çağırmasını beklemek mümkündür veya printf("%10000$c")
çağrılarak da mümkündür, bu da çok fazla bayt ayırarak libc
'in bunları yığında ayırmak için malloc çağırmasını sağlar.
One Gadget hakkında daha fazla bilgi için:
{% content-ref url="../rop-return-oriented-programing/ret2lib/one-gadget.md" %} one-gadget.md {% endcontent-ref %}
{% hint style="warning" %} Kancaların GLIBC >= 2.34 için devre dışı bırakıldığını unutmayın. Modern GLIBC sürümlerinde kullanılabilecek diğer teknikler bulunmaktadır. Bakınız: https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md. {% endhint %}
Free Hook
Bu, bir sıralı olmayan bin saldırısını kötüye kullanıp hızlı bir bin saldırısını kötüye kullanan sayfadan bir örnekte kötüye kullanılmıştır:
{% content-ref url="../heap/unsorted-bin-attack.md" %} unsorted-bin-attack.md {% endcontent-ref %}
Şimdi bir hızlı bin saldırısı gerçekleştiriliyor:
- İlk olarak,
__free_hook
konumunda 200 boyutunda hızlı parçalarla çalışmanın mümkün olduğu keşfedilir: -
gef➤ p &__free_hook
$1 = (void (**)(void *, const void *)) 0x7ff1e9e607a8 <__free_hook>
gef➤ x/60gx 0x7ff1e9e607a8 - 0x59
0x7ff1e9e6074f: 0x0000000000000000 0x0000000000000200
0x7ff1e9e6075f: 0x0000000000000000 0x0000000000000000
0x7ff1e9e6076f <list_all_lock+15>: 0x0000000000000000 0x0000000000000000
0x7ff1e9e6077f <_IO_stdfile_2_lock+15>: 0x0000000000000000 0x0000000000000000
- Eğer bu konumda 0x200 boyutunda hızlı bir parça elde edilirse, yürütülecek bir işlev işaretçisini üzerine yazmak mümkün olacaktır
- Bunun için, boyutu
0xfc
olan yeni bir parça oluşturulur ve birleştirilmiş işlev bu işaretçiyle iki kez çağrılır, bu şekilde hızlı bir parçanın boyutu0xfc*2 = 0x1f8
olan bir serbest bırakılmış parçanın işaretçisine ulaşılır. - Ardından, bu hızlı parçanın
fd
adresini önceki__free_hook
işlevine işaret etmesi için bu parçada düzenleme işlevi çağrılır. - Daha sonra, hızlı bir parçadan önceki gereksiz parçayı almak için boyutu
0x1f8
olan bir parça oluşturulur, böylece__free_hook
'ta hızlı bir parça parçası alınır ve üzerinesystem
işlevinin adresiyle üzerine yazılır. - Ve son olarak,
/bin/sh\x00
dizesini içeren bir parça serbest bırakılarak silme işlevi çağrılır,__free_hook
işlevi tetiklenir ve/bin/sh\x00
parametresiyle sistem işlevine işaret eder.
Referanslar
- https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook
- https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md.
AWS hackleme konusunda sıfırdan kahramana öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!
HackTricks'ı desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamını görmek istiyorsanız veya HackTricks'i PDF olarak indirmek istiyorsanız ABONELİK PLANLARINI kontrol edin!
- Resmi PEASS & HackTricks ürünlerini alın
- PEASS Ailesi'ni keşfedin, özel NFT'lerimiz koleksiyonumuz
- Katılın 💬 Discord grubuna veya telegram grubuna veya bizi Twitter 🐦 @hacktricks_live** takip edin.**
- Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın.