Skip to main content

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:

  1. Propuneți un program minimal C, numit source.c, care să exemplifice vulnerabilitatea.
  2. Adaptați fișierul Makefile de mai jos pentru a permite compilarea source.c pe 32 de biți (numai dacă este cazul).
  3. Analizați în Ghidra programul executabil rezultat și verificați dacă funcția vulnerabilă este prezentă. Faceți capturi de ecran.
  4. 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?
  5. Creând un script Python ce folosește pwntool, numit exploit.py, lansați executabilul în execuție și trimiteți o intrare care să declanșeze vulnerabilitatea.
  6. 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