This is an old revision of the document!
Folosirea necorespunzătoare a șirurilor, întregilor și a altor tipuri de date și funcționalități poate lăsa atacatorului posibilitatea de citire și suprascriere de informații critice din memorie. Exploatarea memoriei este unul dintre modurile în care un atacator urmărește accesul la sistem și controlul acestuia.
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/06-exploatarea-memoriei-skel.zip unzip 06-exploatarea-memoriei-skel.zip cd 06-exploatarea-memoriei-skel/
Accesăm directorul bo-local-variable/
din arhiva de suport.
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!.
Ca să afișați un șir mai complex folosiți Python ca mai jos:
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...
rbp-<numar>
):
student@pr706-pc:~$ objdump -d -M intel vuln
Accesăm directorul bo-function-pointer/
din arhiva de suport.
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 variabila locală de tip pointer de funcție f
cu adresa funcției hidden()
în locul funcției public()
.
nm
pe acel executabil:
student@pr706-pc:~$ nm vuln
Accesăm directorul bo-return-address/
din arhiva de suport.
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! prin apelarea funcției hidden
. Va trebui să suprascrieți adresa de retur a funcției do_nasty()
cu adresa funcției hidden()
.
rbp+8
.
Accesăm directorul run-shellcode/
din arhiva de suport.
Urmăriți conținutul fișierului vuln.c
și rulați executabilul vuln
.
Accesăm directorul inject-shellcode/
din arhiva de suport.
Urmăriți conținutul fișierului vuln.c
și rulați executabilul vuln
.
Accesăm directorul bo-inject-shellcode/
din arhiva de suport.
Urmăriți conținutul fișierului vuln.c
și rulați executabilul vuln
.