This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
secure-low-level-programming:capitole:08-masuri-defensive [2018/12/20 11:59] razvan [Data Execution Prevention (DEP)] |
secure-low-level-programming:capitole:08-masuri-defensive [2018/12/20 16:24] (current) razvan [Fortify Source] |
||
---|---|---|---|
Line 70: | Line 70: | ||
Exploatați executabilul ''vuln''. | Exploatați executabilul ''vuln''. | ||
- | Apoi decomentați prima linie din ''Makefile'' și încercați din nou exploatarea executabilului ''vuln''. Observați că activarea opțiunii ''_FORTIFY_SOURCE'' nu mai permite exploatarea executabilului. | + | Apoi decomentați prima linie din ''Makefile'' și încercați din nou exploatarea executabilului ''vuln''. În mod obișnuit, absența/dezactivarea opțiunii ''_FORTIFY_SOURCE'' nu ar mai permite exploatarea executabilului. Cu toate acestea, e posibil ca anumite versiuni de compilator să definească implicit opțiunea ''_FORTIFY_SOURCE''. Soluția este să precizăm valoarea ''0'' pentru opțiunea în fișierul ''Makefile'' ca mai jos: |
+ | <code> | ||
+ | CPPFLAGS = -D_FORTIFY_SOURCE=0 | ||
+ | </code> | ||
==== Address Sanitizer ==== | ==== Address Sanitizer ==== | ||
- | Accesăm directorul ''fortify_source/'' din arhiva de suport. | + | Accesăm directorul ''asan/'' din arhiva de suport. |
Urmăriți conținutul fișierului ''prog.c'' și rulați executabilul ''prog''. Fișierul executabil ''prog'' este obținut folosind suport de //Address Sanitizer//, așa cum puteți observa din fișierul ''Makefile''. | Urmăriți conținutul fișierului ''prog.c'' și rulați executabilul ''prog''. Fișierul executabil ''prog'' este obținut folosind suport de //Address Sanitizer//, așa cum puteți observa din fișierul ''Makefile''. | ||
La rularea executabilului, //Address Sanitizer// detectează situația de //stack buffer overflow//. | La rularea executabilului, //Address Sanitizer// detectează situația de //stack buffer overflow//. |