User Tools

Site Tools


secure-low-level-programming:capitole:05-siruri

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
secure-low-level-programming:capitole:05-siruri [2018/12/18 09:06]
razvan
secure-low-level-programming:capitole:05-siruri [2018/12/19 11:07] (current)
razvan [Suprascriere (overflow)]
Line 15: Line 15:
   * [[http://​koala.cs.pub.ro/​training/​res/​secure-low-level-programming/​arc/​05-siruri-skel.zip|Arhiva de suport]]   * [[http://​koala.cs.pub.ro/​training/​res/​secure-low-level-programming/​arc/​05-siruri-skel.zip|Arhiva de suport]]
  
-===== Alte resurse ===== 
  
-  * TODO link 
-  * TODO link 
-  * TODO link 
  
 ===== Exerciții ===== ===== Exerciții =====
Line 53: Line 49:
 Accesăm directorul ''​leak/''​ din arhiva de suport. Accesăm directorul ''​leak/''​ din arhiva de suport.
  
-Urmăriți conținutul fișierului ''​vuln.c''​ și rulați executabilul ''​vuln''​. Ambele funcții din fișierul sursă (''​do_nasty1()''​ ''​do_nasty2()''​) generează leak de informație. De ce se întâmplă asta?+Urmăriți conținutul fișierului ''​vuln.c''​ și rulați executabilul ''​vuln''​. Ambele funcții din fișierul sursă (''​do_nasty1()''​ ''​do_nasty2()''​) generează leak de informație. De ce se întâmplă asta? Ce informație este leaked în fiecare caz?
  
 <note tip> <note tip>
Line 66: Line 62:
 Accesăm directorul ''​overflow/''​ din arhiva de suport. Accesăm directorul ''​overflow/''​ din arhiva de suport.
  
-Urmăriți conținutul fișierului ''​vuln.c''​ și rulați executabilul ''​vuln''​.+Urmăriți conținutul fișierului ''​vuln.c''​ și rulați executabilul ''​vuln''​. ​Folosiți-vă de buffer overflow-ul existent în program ca să afișați mesajul //​You'​ve got it. Congratulations!//​. Trebuie să suprascrieți șirul/​buffer-ul ''​msg''​ cu mesajul corespunzător. 
 + 
 +<note tip> 
 +Ca să vedeți unde sunt plasate variabilele locale și bufferele și să aflați diferența între ele (//​offset//​-ul),​ dezasamblați executabilul și aflați adresa bufferului și a variabilei (sunt de forma ''​rbp-<​numar>''​):​ 
 +<​code>​ 
 +student@pr706-pc:​~$ objdump -d -M intel vuln 
 +</​code>​ 
 +</​note>​ 
 + 
 +Ca să afișați un șir mai complex folosiți Python ca mai jos: 
 +<​code>​ 
 +student@pr706-pc:​~$ python -c 'print "​A"​*16'​ 
 +AAAAAAAAAAAAAAAA 
 + 
 +student@pr706-pc:​~$$ python -c 'print "​A"​*16 + "​B"​*4'​ 
 +AAAAAAAAAAAAAAAABBBB 
 + 
 +student@pr706-pc:​~$$ python -c 'print "​A"​*16 + "​B"​*4 + "​\xaa\xbb"'​ 
 +AAAAAAAAAAAAAAAABBBB 
 + 
 +student@pr706-pc:​~$$ python -c 'print "​A"​*16 + "​B"​*4 + "​\xaa\xbb"'​ | xxd 
 +00000000: 4141 4141 4141 4141 4141 4141 4141 4141  AAAAAAAAAAAAAAAA 
 +00000010: 4242 4242 aabb 0a                        BBBB... 
 +</​code>​
  
 ==== Caracteristici printf ==== ==== Caracteristici printf ====
Line 72: Line 91:
 Accesăm directorul ''​printf-features/''​ din arhiva de suport. Accesăm directorul ''​printf-features/''​ din arhiva de suport.
  
-Urmăriți conținutul fișierului ''​vuln.c''​ și rulați executabilul ''​vuln''​.+Urmăriți conținutul fișierului ''​printf_features.c''​, folosiți comanda ''​make''​ pentru a compila ​și apoi rulați executabilul ''​print_features''​. Vedeți pentru fiecare mesaj ce se întâmplă și de ce se întâmplă.
  
 ==== Atacuri de șir de formatare ==== ==== Atacuri de șir de formatare ====
Line 78: Line 97:
 Accesăm directorul ''​format-string-attack/''​ din arhiva de suport. Accesăm directorul ''​format-string-attack/''​ din arhiva de suport.
  
-Urmăriți conținutul fișierului ''​vuln.c''​ și rulați executabilul ''​vuln''​.+Urmăriți conținutul fișierului ''​vuln.c''​ și rulați executabilul ''​vuln''​. ​Folosiți scriptul ''​exploit''​ pentru a exploata programul ''​vuln''​ în forma: 
 +<​code>​ 
 +./exploit | ./vuln 
 +</​code>​ 
 + 
 +<note important>​ 
 +Este posibil ca pe o configurație a sistemului să nu funcționeze scriptul ''​exploit''​ adică să nu suprascrie variabila ''​v''​ cu valoarea ''​100''​ ci cu altă valoare. Actualizați scriptul pentru a funcționa corespunzător. 
 +</​note>​
secure-low-level-programming/capitole/05-siruri.1545116798.txt.gz · Last modified: 2018/12/18 09:06 by razvan