You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Apr 6, 2025. It is now read-only.
Adaugă materialele specifice celui de-al doilea laborator. În plus,
modifică detalii din README.md și SETUP.md și rezolvă din problemele
găsite în directorul primului laborator.
Signed-off-by: iosifache <[email protected]>
Copy file name to clipboardExpand all lines: 1 - Introducere/Exerciții/README.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,38 +1,38 @@
1
1
# 1 - Număr de Șiruri de Caractere Printabile 🏁
2
2
3
-
Câte șiruri de caractere cu lungime mai mare de 10 există în executabilul `lyrics`? Folosiți librăria `pwntool` pentru rezolvare.
3
+
Câte șiruri de caractere cu lungime mai mare de 10 există în executabilul [`lyrics.elf`](lyrics/lyrics.elf)? Folosiți librăria `pwntool` pentru rezolvare.
4
4
5
5
*Flag*-ul este în format `[0-9]*`.
6
6
7
7
# 2 - Tipuri de Șiruri de Caractere Printabile 💁
8
8
9
-
De unde provin șirurile de caractere găsite în executabilul `lyrics`?
9
+
De unde provin șirurile de caractere găsite în executabilul [`lyrics.elf`](lyrics/lyrics.elf)?
10
10
11
11
# 3 - Număr de Simboluri 🏁
12
12
13
-
Identificați numărul de simboluri din segmentul de cod al executabilului `lyrics`. Folosiți librăria `pwntool` pentru rezolvare.
13
+
Identificați numărul de simboluri din segmentul de cod al executabilului [`lyrics.elf`](lyrics/lyrics.elf). Folosiți librăria `pwntool` pentru rezolvare.
14
14
15
15
*Flag*-ul este în format `[0-9]*`.
16
16
17
17
# 4 - Proveniența Simbolurilor 💁
18
18
19
-
Judecând după tipurile pe care comanda `nm` le produce asupra executabilului `lyrics`, presupuneți de unde vin simbolurile `lyrics`, `puts` și `main`.
19
+
Judecând după tipurile pe care comanda `nm` le produce asupra executabilului [`lyrics.elf`](lyrics/lyrics.elf), presupuneți de unde vin simbolurile `lyrics`, `puts` și `main`.
20
20
21
21
# 5 - Automatizarea Analizei Dinamice cu `pwntools` 🏁
22
22
23
-
Rulați programul `flag-checker`. Cum operațiunile ce trebuiesc efectuate sunt prea multe, automatizați tot procesul de identificare a *flag*-ului cu ajutorul librăriei `pwntools`.
23
+
Rulați programul [`flag-checker.elf`](flag-checker/flag-checker.elf). Cum operațiunile ce trebuiesc efectuate sunt prea multe, automatizați tot procesul de identificare a *flag*-ului cu ajutorul librăriei `pwntools`.
24
24
25
25
*Flag*-ul este în format `SI{[A-Z_]*}`.
26
26
27
27
# 6 - Librării Dinamice 💁
28
28
29
-
Identificați modalitatea prin care executabilul `flag-checker` apelează funcția de verificare a *flag*-ului. Puteți folosi utilitarele `ldd` și `objdump`.
29
+
Identificați modalitatea prin care executabilul [`flag-checker.elf`](flag-checker/flag-checker.elf) apelează funcția de verificare a *flag*-ului. Puteți folosi utilitarele `ldd` și `objdump`.
30
30
31
31
# 7 - Dezasamblarea Programelor 💁
32
32
33
33
Puteți identifica *flag*-ul de la sarcina de mai sus prin rularea comenzii `strings` asupra programului?
34
34
35
-
Dacă nu, vă puteți da seama de ce din dezasamblarea funcției `check_flag` din librăria `libcheckflag.so`? Încercați aceeași tip de dezasamblare în Ghidra, eventual folosind funcția de decompilare.
35
+
Dacă nu, vă puteți da seama de ce din dezasamblarea funcției `check_flag` din librăria [`libcheckflag.so`](flag-checker/libcheckflag.so)? Încercați aceeași tip de dezasamblare în Ghidra, eventual folosind funcția de decompilare.
Copy file name to clipboardExpand all lines: 1 - Introducere/Rezolvări/README.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@
6
6
7
7
## Rezolvare
8
8
9
-
Vezi fișierul `strings.py`. Odată rulat cu comanda, va afișa *flag*-ul. Comportamentul lui este asemănător utilitarului `strings`, ce putea fi utilizat aici astfel: `strings executable -n 15 | wc -l`.
9
+
Vezi fișierul [`strings.py`](strings.py). Odată rulat cu comanda, va afișa *flag*-ul. Comportamentul lui este asemănător utilitarului `strings`, ce putea fi utilizat aici astfel: `strings lyrics.elf -n 15 | wc -l`.
10
10
11
11
# 2 - Tipuri de Șiruri de Caractere Printabile 💁
12
12
@@ -26,7 +26,7 @@ Vezi fișierul `strings.py`. Odată rulat cu comanda, va afișa *flag*-ul. Compo
26
26
27
27
## Rezolvare
28
28
29
-
Vezi fișierul `symbols.py`. Odată rulat cu comanda, va afișa *flag*-ul.
29
+
Vezi fișierul [`symbols.py`](symbols.py). Odată rulat cu comanda, va afișa *flag*-ul.
30
30
31
31
# 4 - Proveniența Simbolurilor 💁
32
32
@@ -50,13 +50,13 @@ Se observă faptul că executabilul afișează numai acea porțiune din șirul d
50
50
51
51
Se începe cu primul caracter, testându-se toate posibilitățile. La încercarea la care programul afișează un caracter, atunci îl putem seta ca primul caracter din *flag*-ul construit progresiv și putem trece la următorul până când caracterul `}` (terminatorul de *flag*) apare.
52
52
53
-
O implementare este oferită în fișierul `flag-checker.py`.
53
+
O implementare este oferită în fișierul [`flag-checker.py`](flag-checker.py).
54
54
55
55
# 6 - Librării Dinamice 💁
56
56
57
-
Rulând comanda `ldd flag-checker` observăm faptul că executabilul folosește o librărie dinamică numită `libcheckflag.so`.
57
+
Rulând comanda `ldd flag-checker.elf` observăm faptul că executabilul folosește o librărie dinamică numită `libcheckflag.so`.
58
58
59
-
Pentru a identifica modul în care se apelează funcții din ea, rulăm comanda `objdump --disassemble=main -M intel flag-checker`, ce dezasamblează codul funcției `main` (argumentul `--disassemble`) în sintaxa specifică Intel (argumentul `-M`). Astfel, se ajunge la concluzia că libraria este încărcată în memorie prin apelul funcției `dlopen` și funcția din ea, `check_flag`, este referențiată printr-un apel `dlsym`.
59
+
Pentru a identifica modul în care se apelează funcții din ea, rulăm comanda `objdump --disassemble=main -M intel flag-checker.elf`, ce dezasamblează codul funcției `main` (argumentul `--disassemble`) în sintaxa specifică Intel (argumentul `-M`). Astfel, se ajunge la concluzia că libraria este încărcată în memorie prin apelul funcției `dlopen` și funcția din ea, `check_flag`, este referențiată printr-un apel `dlsym`.
0 commit comments