User Tools

Site Tools


secure-low-level-programming:capitole:02-spatii-de-adrese

2. Spații de adrese

Ne interesează modul în care este structurat spațiul de adrese al unui proces pentru a înțelege vulnerabilitățile legate de memoria sa. Vom vorbi despre zonele din spațiul de adrese al unui proces, rolul fiecăreia și perspective de cum pot fi atacate.

Subiecte abordate

  • procese
  • spațiul (virtual) de adrese al unui proces
  • zone din spațiul virtual de adrese
  • alocarea și accesarea memoriei

Resurse

Exerciții

Arhiva de suport pentru exerciții se găsește aici. Descărcați arhiva și apoi decomprimați-o folosind comenzile:

wget http://koala.cs.pub.ro/training/res/secure-low-level-programming/arc/02-spatii-de-adrese-skel.zip
unzip 02-spatii-de-adrese-skel.zip

Spațiul de adrese

Accesăm directorul address-space/ din arhiva de suport.

Urmăriți conținutul fișierului prog.c și rulați executabilul prog.

Într-o altă consolă rulați comanda

pmap -p $(pidof prog)

Comanda afișează spațiul virtual de adrese al procesului.

Dacă doriți să urmăriți continuu (automat) spațiul virtual de adrese al procesului, rulați comanda

watch -d -n 1 pmap -p $(pidof prog)

Treceți prin fiecare pas în program și rulați comanda de mai sus la fiecare pas pentru a vedea cum se modifică (sau nu) zonele din spațiul virtual de adrese al procesului.

Faceți o modificare ca să alocați (într-o buclă, cel mai simplu) de 10 ori memorie de fiecare fel.

Acces read-write

Accesăm directorul read-write-areas/ din arhiva de suport.

Urmăriți conținutul fișierului prog.c și rulați executabilul prog. Generați accesarea de fiecare tip (read sau write) a fiecărei zone de mari de memorie a unui proces. De ce la unele primiți segmentation fault?

Acces peste limite

Accesăm directorul over-the-edge/ din arhiva de suport.

Urmăriți conținutul fișierului vuln.c și rulați executabilul vuln. Observați cum accesarea dincolo de limitele buffer-ului nu generează segmentation fault.

Modificați programul pentru a vedea la ce index din cadrul fiecărei zone (data, stack, heap) obțineți segmentation fault.

secure-low-level-programming/capitole/02-spatii-de-adrese.txt · Last modified: 2018/12/17 17:06 by razvan