User Tools

Site Tools


teme:tema-3

This is an old revision of the document!


A PCRE internal error occured. This might be caused by a faulty plugin

====== Tema 3 ====== * Deadline Soft: 19.01.2016 23:55 * Deadline Hard: 19.01.2016 23:55 * Data publicării: 09.01.2016 ''01:15'' * Data ultimei modificări: 12.01.2016 ''13:02'' * Responsabili: * [[vladimir.diaconescu@cs.pub.ro|Vladimir Diaconescu]] * [[bogatu.adrian@gmail.com|Adrian Bogatu]] ===== Enunț ===== Să se compileze un program scris în limbaj C și să se rezolve următoarele: - Identificați posibilele vulnerabilități ce s-ar putea găsi în program (analiză statică). - Determinați userul și parola pentru login. - Creați o suită de intrări pentru program astfel încât: - Programul să ajungă să execute funcția ''secret_func1''. - Programul să "apeleze" funcția ''secret_func2'' cu argumente valide de intrare. - Programul să "apeleze" din biblioteca standard C funcția ''fopen('<prenume>', 'w')'' pentru a crea un fișier local având prenumele vostru. ===== Setup ===== Pentru dezvoltarea temei recomandăm să folosiți mașina virtuală de Windows descrisă în secțiunea [[:utile#masini-virtuale|Mașini virtuale]] din pagina de resurse. Mașina virtuală de Windows este numită ''SSS - Windows 7 32bit''. Această mașină virtuală este folosită și pentru verificarea temei pe [[https://vmchecker.cs.pub.ro/ui/#IOCLA|vmchecker]]. În [[http://elf.cs.pub.ro/asm/res/teme/iocla-tema3-resurse.zip|arhiva de resurse a temei]] veți vedea că există fișierul ''seed.c'', precum și scriptul Python ''mangle.py''. Pentru a genera fișierul sursă C plecând de la ''seed.c'', rulați comanda:<code> python mangle.py <nume> <prenume> <a treia cifră din numărul grupei> </code> unde: * ''<nume>'' este numele vostru de familie (începeți cu majusculă) * ''<prenume>'' este prenumele vostru (unul dintre ele dacă aveți două, începeți cu majusculă) * ''<a treia cifră din numărul grupei>'' este ceea ce ce spune :-); pentru grupa 324CA este cifra ''4'', iar pentru grupa ''322CA'' este cifra ''2'' <note> De exemplu, pentru ''Ionescu Anca-Monica'' de la grupa ''323CA'', modul de rulare a comenzii de generare a fișierului sursă C va fi<code> python mangle.py Ionescu Anca 3 </code> </note> Comanda de mai sus va genera fișierul ''tema3.c''. Acesta este fișierul propriu-zis al temei care trebuie compilat. Înainte de toate, recomandăm să adăugați în variabila ''PATH'' calea pentru gcc/gdb și alte utilitare, precum și pentru Python. Pentru aceasta, în ''Command Prompt'', rulați comanda<code> set PATH=%PATH%;C:\Python27;C:\MinGW\bin </code> Acum puteți să compilați fișierul temei generat mai sus:<code> gcc -o tema3.exe tema3.c </code> ===== Implementare ===== La nivelul implementării, aveți de scris câteva fișiere de intrare pentru programul compilat care să rezolve câte una din cerințele din enunț (de la punctul 3). Recomandăm să generați acește fișiere de intrare folosind un script Python sau orice alt limbaj de programare. ===== Trimitere și notare ===== Temele vor trebui încărcate pe platforma [[https://vmchecker.cs.pub.ro/ui/#IOCLA|vmchecker]] (în secțiunea IOCLA) și vor fi testate automat. Arhiva încărcată va fi o arhivă ''.zip'' care trebuie să conțină: * fișierele sursă/script-urile ce generează intrările pentru program: ''payload_a'', ''payload_b'', ''payload_c'' * fișierul sursă aferent: ''tema3.c'' * fișier ''README'' ce conține descrierea implementării * analiza statică (pe scurt) * cum ați determinat userul și parola de login * cum v-ați gândit să faceți programul să ajungă în ''secret_func1'', ''secret_func2'', ''fopen'' Punctajul este repartizat în felul următor: * 20% README, cu pașii urmați pentru a rezolva cerințele, explicați în detaliu * 25% analiză statică * 25% determinare user și parola, și trecerea de procesul de login * 30% cele trei exploatări <note> Ca să compensăm pentru întârzierea anunțării temei, tema valorează **1.5 puncte** față de **1 punct** cât valorează celelalte două teme. Punctajul total obținut pe teme se trunchiază la **3 puncte**. </note> ===== Precizări suplimentare ===== În cadrul corectării, vom verifica dacă ''tema3.c'' este într-adevăr fișierul generat pornind de la ''seed.c'' și datele voastre. Dacă există diferențe, nu se merge mai departe în procesul de corectare. Din moment ce programul de intrare scris în C este dat, analiza statică presupune să interpretați cod C, nu assembly. ===== Arhivă temă ===== Arhiva de resurse a temei, ce conține ''mangler.py'' si ''seed.c'' (în curând și checker-ul) o puteți descărca de {{http://elf.cs.pub.ro/asm/res/teme/iocla-tema3-resurse.zip|aici}}. ===== Resurse ajutătoare ===== * [[laboratoare:laborator-09|Laborator 9]]: Gestiunea bufferelor. Buffer overflow * [[laboratoare:laborator-10|Laborator 10]]: Exploatarea memoriei. Shellcodes * [[https://protostar-solutions.googlecode.com/hg/Stack%206/ret2libc.pdf|Performing a ret2libc attack]]

teme/tema-3.1452596566.txt.gz · Last modified: 2016/01/12 13:02 by razvan.deaconescu