User Tools

Site Tools


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

This is an old revision of the document!


5. Lucrul cu șiruri

Una dintre cele mai importante structuri în limbajele de programare (și printre cele mai cauzatoare de dureri de cap) o reprezintă șirurile. Discutăm despre reprezentarea șirurilor, despre particularități ale lucrurilor cu șiruri, probleme frecvente și moduri de exploatare.

Subiecte abordate

  • buffere și șiruri
  • șiruri în C
  • șiruri în C++
  • probleme cu șiruri

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/05-siruri-skel.zip
unzip 05-siruri-skel.zip
cd 05-siruri-skel

Dimensiunea unui șir

Accesăm directorul charsize/ din arhiva de suport.

Urmăriți conținutul fișierului prog.c și rulați executabilele prog și prog32. Urmăriți dimensiunea tipurilor de date corespunzătoare unui caracter.

End of File (EOF)

Accesăm directorul eof/ din arhiva de suport.

Urmăriți conținutul fișierului vuln.c și rulați executabilul vuln. Programul nu funcționează corespunzător, se oprește la citirea primelor 3 caractere din fișierul data. Rezolvați problema.

Ca să vedeți conținutul efectiv (binar) al fișierului data rulați comanda

xxd data
00000000: 616e 61ff 6172 65ff 6d65 7265 0a         ana.are.mere.

Leak de informație

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?

Pentru a observa un leak binar (neprintabil) folosiți o comandă de forma

./vuln | xxd

Suprascriere (overflow)

Accesăm directorul overflow/ din arhiva de suport.

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

Caracteristici printf

Accesăm directorul printf-features/ din arhiva de suport.

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

Atacuri de șir de formatare

Accesăm directorul format-string-attack/ din arhiva de suport.

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

secure-low-level-programming/capitole/05-siruri.1545123580.txt.gz · Last modified: 2018/12/18 10:59 by razvan