User Tools

Site Tools


laboratoare:laborator-10

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
laboratoare:laborator-10 [2015/12/18 19:09]
razvan.deaconescu [[2p] 1. Recon]
laboratoare:laborator-10 [2016/01/09 13:39] (current)
razvan.deaconescu [[3p] BONUS Graceful exit]
Line 41: Line 41:
 ===== Setup ===== ===== Setup =====
  
-Recomandăm să faceți următorul setup după ce porniți ​''​cmd.exe'':​ +Pentru a putea rula ''​python'',​ ''​gdb''​ și ''​objdump''​ de oriunde (în cadrul acelei console) recomandăm să faceți următorul setup în ''​Command Prompt'':​<​code>​ 
- +set PATH=%PATH%;"​C:​\Program Files (x86)\SASM\MinGW\bin";"​C:​\Python27"​ 
-''​set PATH=%PATH%;"​C:​\Program Files (x86)\SASM\MinGW\bin";"​C:​\Python27"​''​ +</​code>​
- +
-În felul acesta, veți putea rula ''​python'',​ ''​gdb''​ și ''​objdump''​ de oriunde (în cadrul acelui terminal).+
  
 ===== Exerciții ===== ===== Exerciții =====
  
-În cadrul acestui laborator, vom folosi ​{{:​laboratoare:lab-10-tasks.zip|arhiva de sarcini a laboratorului}}.+În cadrul acestui laborator, vom folosi ​[[http://​elf.cs.pub.ro/​asm/​res/​laboratoare/lab-10-tasks.zip|arhiva de sarcini a laboratorului]].
  
 <note tip> <note tip>
Line 56: Line 54:
  
 <​note>​ <​note>​
-Puteți folosi orice fel de consolă vi se pare adecvat.+Puteți folosi orice fel de consolă vi se pare adecvată.
 </​note>​ </​note>​
  
 ==== [2p] Tutorial: Găsire offset și suprascrierea adresei de retur ==== ==== [2p] Tutorial: Găsire offset și suprascrierea adresei de retur ====
  
-Accesați subdirectorul ''​tutorial''​ din arhiva de sarcini a laboratorului.+Accesați subdirectorul ''​tutorial/''​ din [[http://​elf.cs.pub.ro/​asm/​res/​laboratoare/​lab-10-tasks.zip|arhiva de sarcini a laboratorului]].
  
 Inspectați sursa ''​tutorial.asm''​ și rulați comanda ''​build_tutorial''​. Inspectați sursa ''​tutorial.asm''​ și rulați comanda ''​build_tutorial''​.
Line 184: Line 182:
 ==== [2p] 1. Recon ==== ==== [2p] 1. Recon ====
  
-Accesați subdirectorul ''​tutorial''​ din arhiva de sarcini a laboratorului.+Accesați subdirectorul ''​shellcode''​ din [[http://​elf.cs.pub.ro/​asm/​res/​laboratoare/​lab-10-tasks.zip|arhiva de sarcini a laboratorului]].
  
 Identificați vulnerabilitatea de tip buffer overflow din programul ''​shellcode.asm''​. Faceți programul să crape suprascriind prin buffer overflow o adresă de retur corespunzătoare. Identificați vulnerabilitatea de tip buffer overflow din programul ''​shellcode.asm''​. Faceți programul să crape suprascriind prin buffer overflow o adresă de retur corespunzătoare.
Line 269: Line 267:
 ni ni
 </​code>​ În acest moment veți face jump la adresa stocată în vârful stivei adică acolo unde programul așteaptă adresa de retur. Dacă totul e în regulă, veți face jump în funcția ''​flag1''​. </​code>​ În acest moment veți face jump la adresa stocată în vârful stivei adică acolo unde programul așteaptă adresa de retur. Dacă totul e în regulă, veți face jump în funcția ''​flag1''​.
 +</​note>​
 +
 +<note important>​
 +Dacă ați completat corect payload-ul, la transmiterea payload-ului către programul ''​shellcode.exe''​ veți avea afișat mesajul dat de variabila ''​honeypot''​ din fișierul ''​shellcode.asm'',​ anume //You shouldn'​t be here!//.
 </​note>​ </​note>​
  
Line 275: Line 277:
 Modificați sursa ''​gen_payload.py''​ astfel încât să genereze un payload care să aducă programul să apeleze funcția ''​flag2''​. Modificați sursa ''​gen_payload.py''​ astfel încât să genereze un payload care să aducă programul să apeleze funcția ''​flag2''​.
  
-<​note>​ +<​note ​tip
-**Hints**: ​Câte argumente are funcția?+Câte argumente are funcția?
 Pentru ce valori ale argumentelor ajunge funcția să treacă testele? Pentru ce valori ale argumentelor ajunge funcția să treacă testele?
 Cum trebuie să arate bufferul de intrare astfel încât atunci când se ajunge în funcție parametrii să se găsească pe pozițiile corespunzătoare pe stivă? Cum trebuie să arate bufferul de intrare astfel încât atunci când se ajunge în funcție parametrii să se găsească pe pozițiile corespunzătoare pe stivă?
Line 283: Line 285:
 Scrieți modificările necesare în ''​gen_payload.py''​ și generați un nou payload. Scrieți modificările necesare în ''​gen_payload.py''​ și generați un nou payload.
  
-==== [3p] BONUS Graceful ​exits ====+<note important>​ 
 +Dacă ați completat corect payload-ul, la transmiterea payload-ului către programul ''​shellcode.exe''​ veți avea afișat mesajul dat de variabila ''​great''​ din fișierul ''​shellcode.asm'',​ anume //Mad skills, yo!//. 
 +</​note>​ 
 +==== [3p] BONUS Graceful ​exit ==== 
 + 
 +Ați observat că, pentru payload-ul anterior, în care apelați funcția ''​flag2()''​ deși se execută codul dorit de noi, programul în continuare crapă. De ce? Corectați acest lucru. Generați noi payload-uri prin care după ce se execută codul dorit, programul să se termine cu succes. 
 + 
 +===== Soluții ===== 
 + 
 +[[http://​elf.cs.pub.ro/​asm/​res/​laboratoare/​lab-10-sol.zip|Soluții de referință pentru exercițiile de laborator]]
  
-Ați observat că deși se execută codul dorit de noi, programul în continuare crapă. De ce? Corectați acest lucru. Generați noi payload-uri prin care după ce se execută codul dorit, programul să se termine cu succes. 
laboratoare/laborator-10.1450458559.txt.gz · Last modified: 2015/12/18 19:09 by razvan.deaconescu