This is an old revision of the document!
În acest laborator veți interacționa cu majoritatea noțiunilor prezentate pe parcursul semestrului prin intermediul unor taskuri de tip Capture-The-Flag. Acestea vor testa înțelegerea și stăpânirea metodelor și toolurilor specifice de analiză statică și dinamică, înțelegerea procesului de compilare, a limbajului de asamblare - sintaxă, regiștri, lucru cu memoria, funcții - dar și capacitatea de identificare și exploatare a unor vulnerabilități simple de tip buffer overflow.
iocla_{<string>} 
get_flag(). Scopul exercițiilor nu implică a face reverse-engineering pe această funcție sau apel direct din cadrul debuggerului; se recomandă tratarea ei ca și Black Box. 
python -c 'import sys; sys.stdout.write("A"\*10 + b"\x00\x00\x00\x00" + ...)' | ./exec. 
Binarul 1-1-hidden-in-plain-sight/link expune tot ce aveți nevoie. Găsiți un mod de a-l folosi.
Investigați binarul 1-2-hidden-in-plain-sight/link2. Modul în care poate fi executat nu mai este un mister, dar va fi puțin mai dificil să ajungeți la flag.
Binarul 2-look-at-him-go/dynamic este de data aceasta executabil și are ca unic scop obținerea flagului și plasarea lui undeva in memorie. No tricks here.
Binarul 3-playing-god/dynamic2 vă cere să ghiciți un număr între 1 și 100000. Găsiți o cale mai bună de a-l afla.
Binarul 4-indirect-business/buff-ovf conține o vulnerabilitate clasică. Folosiți inputul pentru a modifica datele în favoarea voastră.
Binarul 5-rip-my-buffers-off/buff-ovf2 nu folosește funcția get_flag(), dar oferă o oportunitate de a o apela.
Urmăriți șirul de operații din funcțiile binarului 6-feeling-chained/buff-ovf3. Identificați-le pe cele necesare și… deja știți cum se apelează.
7-rop/rop este un binar pe 64 de biți cu un simplu buffer overflow.
ret. Aceste bucăți de cod se numesc gadgeturi. 
pwndbg, puteți folosi o comandă de tipul rop --grep "pop rsi".