Re: [LINUX:3691] Re: login id

SERTKAYA BARIS (e1097757@ceng.metu.edu.tr)
Fri, 17 Jul 1998 10:41:05 +0300 (EET DST)


>
> On Thu, 16 Jul 1998, [iso-8859-9] Bülent Erdemir wrote:
>
> :Merhaba,
> :
> :Bu tur konular benim de ilgimi cekiyor. return adresine yazan
> :fonksiyonlari ise ilk defa duyuyorum. Bu konuda bir kac ornek vermeniz
> :mumkun mu ? Ya da bilgi alabilecegim bir adres ???

Bir C programi calistirdiginizda hafizanin belli bir adresine bir pointer
yaziliyor.Onun altina programin argumanlari ve daha sonra kodu(asagi dogru
buyuyen bir stack).Eger program uzunlugunu kontrol etmeden komut satirinda
verdiginiz string'i aliyor ve hafizaya kopyaliyorsa programin bu bug'indan
yararlanilip buffer overflow yaptiriliyor.Soyle:Tam o argumanin uzunlugunda
garbage olarak bir string,ardinda da calistirmak istediginiz kod,mesela
shell fork eden bir kod parcasi :)
(kucuk olmasi icin genelde assembly kullaniliyor).Ama burada oyle iyi bir byte
hesabi yapmalisiniz ki, yazdiginiz kod buffer'i doldurup, tam olarak onun
uzerindeki return adresini overwrite etsin.Programin isi bitip o adrese tekrar
geri geldiginde,yazdiginiz kod parcasi calistirilir.Artik kodunuz neyse :)
Ama bunun icin yamalar da var,non-executable stack gibi...

baris sertkaya
ODTU bilgisayar muhendisligi