re-2023
Se dau următoarele tipuri de vulnerabilități și, pentru fiecare, un identificator:
- Suprascrierea stivei (
stack
); - Suprascrierea întregilor (
integer
); și - Atacuri cu șiruri de formatare (
format
).
Pentru fiecare, efectuați următoarele sarcini:
- Propuneți un program minimal C, numit
source.c
, care să exemplifice vulnerabilitatea. - Adaptați fișierul
Makefile
de mai jos pentru a permite compilareasource.c
pe 32 de biți (numai dacă este cazul). - Analizați în Ghidra programul executabil rezultat și verificați dacă funcția vulnerabilă este prezentă. Faceți capturi de ecran.
- Presupunând că acest cod sursă ar fi folosit de către o companie într-un serviciu public accesibil din Internet, ce impact ar putea avea un atacator ce exploatează această vulnerabilitate?
- Creând un script Python ce folosește
pwntool
, numitexploit.py
, lansați executabilul în execuție și trimiteți o intrare care să declanșeze vulnerabilitatea. - Propune o mitigare a acestei vulnerabilități.
Structura de fișiere ce va fi trimisă pentru evaluare este formată din 3 sub-foldere, unul pentru fiecare vulnerabilitate:
<identificator_vulnerabilitate>
├── images/ Imagini care demonstrează rezolvarea, precum
| | capturi de ecran
| └── ...
├── source.c Codul sursă C vulnerabil
├── Makefile Makefile pentru compilarea source.c
├── exploit.py Script de exploitare cu pwntools
└── README.md Document cu explicații pentru cerințele 3, 4 și 6
Pentru Makefile
, puteți porni de la exemplul următor, pe care îl puteți modifica după nevoile voastre:
all: build
build:
gcc -m32 source.c -o executable