2011-03-13 13 views
7

Genellikle hepsi var temel taşması biçimini görmek: - NOPs + shellcode + return_addressbellek taşması saldırısı biçimi

Neden kullandığımız dont biz Kabuk kodunun başlangıcına geri dönüş adresi noktayı NOPs + return_address + shellcode??

Im biz açığı ana ise) (yığın segmenti dışında veri yazma çalışıyor olabilir çünkü bu olduğunu tahmin. Ben haklı mıyım Eğer öyleysem, tek neden bu mu?

Oh, ve evet ben getiri-to-libc'nin, ptrace vb kullanmak saldırıların diğer tür atıfta değilim; Sadece en temel tampon taşması saldırısının neden her yerde ikinci sırada değil, ilk sırada gösterildiğini bilmek istiyorum.

cevap

10

dönüş adresi shellcode+nop sled veya sonrasında önce gelebilir. Örneğin, bir değişkene yazıyorsanız, yığının üst kısmını kapatın, yeterli yer olmadığı için, nop sled+shell code yazıp İade Adresinizi (EIP) yazmanız gerekebilir.

Ancak NOP kızak daima kabuk kodunun yanında olacaktır. Bunun nedeni, kabuk kodunuzun hedefini olabildiğince büyük hale getirmek için bir nop kızak kullanmanızdır. EIP'niz kabuk kodunuzdan + 100 bayt işaret ediyorsa, hedefinize ulaşacağınızı garantilemek için 100 bayttan fazla bir nop sled kullanmanız gerekir. Böylece NOPs + return_address + shellcode geçersiz. Ortak bir dize aşağıdaki gibi görünecektir istismar:

JUNK + return_address + NOPs + shellcode

Ve tabii bir "return-to-libc" tarzı saldırı kabuk kodunu veya nop kızak gerektirmez.

Bu basit yığın tabanlı bellek taşması

modern sistemde çalışmaz istifade eder. Alpeh-One'ın Eğlence ve Kar için Yığın Smashing'ı artık NX bölgeleri, yığın kanaryalar ve ASLR'den ötürü artık hepsi Windows ve Linux'ta varsayılan olarak çalışıyor.

Sen bir kopyasını almak gerekir: detaylı cevap için

enter image description here

+2

sayesinde! –