Ok, neki ljudi ce reci da sam nestrpljiv, drugi da zasto postam istu temu dva puta u razlicite (ali srodne) podforume, ali dolje slijedi copy-paste moje poruke sa Security coding podforuma, jer mi se cini da je ovaj podforum posjeceniji (iz kojeg razloga ne znam, ali to mi se cini). Ako netko ima odgovor na postavljeno pitanje/pitanja, neka odgovori na temu u SC podforumu, a ova tema nek se onda obrise za kakvih mjesec-dva dana (mislim, tko sam ja da govorim moderatorima sto i kako, ali ako je moguce da se to tako nekako odigra, bilo bi super).
Pozdrav svima, da se kratko predstavim, ja sam incus i drago mi je sto sam tu.
A sad, par pitanja vezanih za ovu "popularnu" temu.
Naime, citam trenutno knjigu The art of exploitation i cesto se nadjem frustriran pojedinim problemima, ne zato sto ih ne razumijem nego zato sto na kernelu 2.6 vise ne rade. Takodjer, vecina tekstova koje uspijem pronaci su jako stari i osim bazicne ideje nemaju vise neku konkretnu primjenu (tj od kernela 2.6 bar vise nemaju). Npr. primjeri iz knjige TAoE (2. izdanje) rade na liveCD-u koji dodje s knjigom, no svi ti primjeri u knjizi rade pod pretpostavkom da stack pocinje od jedne fiksne adrese, sto ja primjecujem vise nije slucaj. Druga stvar je da se prolog main funkcije malo promijenio (uz pretpostavku da je iskljucen stack protector u gccu) pa tako umjesto da imam :
push %ebp
mov %esp, %ebp
. . .
ja imam:
lea 0x4(%esp), %ecx
and 0xfffffff0, %esp
pushl -0x4(%ecx)
push %ebp
mov %esp, %ebp
push %ecx
zahvaljujuci cemu stack vise ne izgleda kao
[varijable][SFP][EIP]
nego
[varijable][PSP][SFP][EIP][slucajno smece zbog poravnanja stack pointera]["pravi" EIP]
zbog cega ja vise ne mogu prepisati sve sa return adresom, koju usput ne mogu "pogoditi" jer nisam vidoviti milan, jer bi se na taj nacin prepisao i PSP (ja sam ga nazvao previous stack pointer, ne znam kak se zove tocno) koji bi me bacio tko zna gdje (ocita mjesta su ili code segment ukoliko je return adresa prema nekoj instrukciji (sto bas i nije nekaj korisno) ili negdje na stack gdje bi bio shellcode) i probao popati EIP koji bi zapravo bila neka instrukcija ili shellcode.
naravno, environment varijable takodjer ne rade kad stack ne pocinje od neke fiksne adrese. mislim, to je moje opazanje, mozda sam u krivu?
"naprednije" tehnike poput ret-into-libc i slicno jos nisam dotakao, ali planiram uskoro.
a tek kad bi jos ukljucio i stack-protector ili nesto tomu slicno, pa jos na to dodje i non-executable stack ....
recite ljudi, ima li tko kakav prijedlog kako nastaviti dalje? ne mogu se stalno igrati na zastarjelom kernelu i u nadi da ce netko napisati SUID program sa strcpy funkcijom. prije 10ak godina je sve bilo ljepse, ali taj luksuz vise ne postoji... sto sad?
Hvala!