User Tools

Site Tools


secure-low-level-programming:capitole:03-gestiunea-bufferelor

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

secure-low-level-programming:capitole:03-gestiunea-bufferelor [2018/12/16 13:29]
127.0.0.1 external edit
secure-low-level-programming:capitole:03-gestiunea-bufferelor [2018/12/17 09:11] (current)
razvan
Line 1: Line 1:
 ====== 3. Gestiunea bufferelor ====== ====== 3. Gestiunea bufferelor ======
  
-TODO: Descriere scurtă+Vom vorbi despre zone de memorie continue în spațiul de adrese al procesului (bufferele). Vom discuta despre moduri de adresare a memoriei, dimensiuni ale bufferelor, modul în care putem trece de limitele unui buffer.
  
 ===== Subiecte abordate ===== ===== Subiecte abordate =====
  
-  * TODO +  * definiția unui buffer 
-  * TODO+  * pointeri și vectori 
 +  * probleme în folosirea bufferelor
  
 ===== Resurse ===== ===== Resurse =====
Line 12: Line 13:
   * [[http://​koala.cs.pub.ro/​training/​res/​secure-low-level-programming/​slides/​03-gestiunea-bufferelor.pdf|Slide-uri]]   * [[http://​koala.cs.pub.ro/​training/​res/​secure-low-level-programming/​slides/​03-gestiunea-bufferelor.pdf|Slide-uri]]
   * [[http://​koala.cs.pub.ro/​training/​res/​secure-low-level-programming/​arc/​03-gestiunea-bufferelor-skel.zip|Arhiva de suport]]   * [[http://​koala.cs.pub.ro/​training/​res/​secure-low-level-programming/​arc/​03-gestiunea-bufferelor-skel.zip|Arhiva de suport]]
- 
-===== Alte resurse ===== 
- 
-  * TODO link 
-  * TODO link 
-  * TODO link 
  
 ===== Exerciții ===== ===== Exerciții =====
Line 26: Line 21:
 </​code>​ </​code>​
  
-==== Exercițiu 1 ====+==== Pointeri și vectori ==== 
 + 
 +Accesăm directorul ''​pointers-and-arrays/''​ din arhiva de suport. 
 + 
 +Urmăriți conținutul fișierului ''​prog.c''​ și rulați executabilul ''​prog''​. Observați toate operațiile cu pointeri. De ce sunt comentate cele trei linii din funcția ''​work_lhs()''?​ Ce se întâmplă dacă le decomentați?​ 
 + 
 +==== Leak din buffer ==== 
 + 
 +Accesăm directorul ''​buffer-leak/''​ din arhiva de suport. 
 + 
 +Urmăriți conținutul fișierului ''​vuln.cpp''​ și rulați executabilul ''​vuln''​. Obțineți leak din memorie folosind un index dorit. La ce pot fi utile informațiile afișate? Afișați parola. 
 + 
 +==== Overwrite din buffer ​====
  
-Accesăm directorul ''​lalala/''​ din arhiva de suport.+Accesăm directorul ''​buffer-overwrite/''​ din arhiva de suport.
  
-TODO+Urmăriți conținutul fișierului ''​vuln.cpp''​ și rulați executabilul ''​vuln''​. Folosiți un atac de tipul //array index out of bounds// ca să suprascrieți variabila ''​v''​ cu valoarea ''​87654321''​ și să afișați mesajul //​You'​ve got it. Congratulations!//​.
  
-==== Exercițiu 2 ====+==== Use-after-free ​====
  
-Accesăm directorul ''​lalala/''​ din arhiva de suport.+Accesăm directorul ''​use-after-free/''​ din arhiva de suport.
  
-TODO+Urmăriți conținutul fișierului ''​vuln.cpp''​ și rulați executabilul ''​vuln''​. Ce se întâmplă?​ Cum poate fi această "​problemă"​ exploatată?​
  
-==== Exercițiu 3 ====+==== Leak în lanț ====
  
-Accesăm directorul ''​lalala/''​ din arhiva de suport.+Accesăm directorul ''​chained-leak/''​ din arhiva de suport.
  
-TODO+Urmăriți conținutul fișierului ''​vuln.cpp''​ și rulați executabilul ''​vuln''​. Obțineți leak din memorie ca să accesați parola.
  
  
secure-low-level-programming/capitole/03-gestiunea-bufferelor.1544959781.txt.gz · Last modified: 2018/12/16 13:29 by 127.0.0.1