User Tools

Site Tools


length-extension-attack

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
length-extension-attack [2023/11/29 09:35] – lsslength-extension-attack [2025/12/01 11:40] (current) – external edit 127.0.0.1
Line 16: Line 16:
 tajna_vrijednost nije poznata! tajna_vrijednost nije poznata!
  
-Jedan od alata kojim se može izvesti ovakav napad je hash_extender [1].  +Jedan od alata kojim se može izvesti ovakav napad je **hash_extender** [1]. 
- +
-Primjer - hacknite digitalni potpis+
  
 +__**PRIMJER**__ - **Zadatak s Hacknite platforme - Digitalni potpis**
 <file> <file>
  
-Stjepan je osmislio inovativan način autentifikacije. Umjesto lozinke, korisnici moraju učitati digitalno potpisanu datoteku koja dokazuje njihov identitet. Je li autentifikacija implementirana na siguran način?+Stjepan je osmislio inovativan način autentifikacije. Umjesto lozinke, korisnici moraju učitati digitalno  
 +potpisanu datoteku koja dokazuje njihov identitet. Je li autentifikacija implementirana na siguran način?
  
-Dostupna Vam je python skripta za generiranje datoteka i digitalno potpisana datoteka niskoprivilegiranog korisnika, ali ne i tajna lozinka koja se koristi za digitalno potpisivanje.+Dostupna Vam je python skripta za generiranje datoteka i digitalno potpisana datoteka niskoprivilegiranog  
 +korisnika, ali ne i tajna lozinka koja se koristi za digitalno potpisivanje.
  
 Hint: length extension attack Hint: length extension attack
Line 37: Line 38:
 Proučimo skriptu gen_signed_dokument.py Proučimo skriptu gen_signed_dokument.py
  
-<code>+<code python>
 import sys import sys
 import hashlib import hashlib
Line 69: Line 70:
 Kada učitamo dokument, dobijemo poruku da trenutno nemamo nikakve privilegije u sustavu. Kada učitamo dokument, dobijemo poruku da trenutno nemamo nikakve privilegije u sustavu.
  
-*slika ovdje*+{{length_extension_1.png}}
  
 Kada pokušamo jednostavno dodati tekst //can_read_flag// na kraj dokumenta dobijemo poruku //Ne može!// Kada pokušamo jednostavno dodati tekst //can_read_flag// na kraj dokumenta dobijemo poruku //Ne može!//
    
-//slika ovdje//+{{length_extension_2.png}}
  
-To se dogodilo zato što je u tom dokumentu valjani MAC za tekst <code>testni_korisnik</code>, a ne za +To se dogodilo zato što je u tom dokumentu valjani MAC za tekst <code>testni_korisnik</code> a ne za 
 <code>testni_korisnik <code>testni_korisnik
-can_read_flag</code>.+can_read_flag</code>
  
 Možemo zaključiti da trebamo generirati dokument koji ima u sebi ime korisnika, tekst //can_read_flag// i validni MAC.  Možemo zaključiti da trebamo generirati dokument koji ima u sebi ime korisnika, tekst //can_read_flag// i validni MAC. 
-Budući da ne znamo tajnu vrijednost, ne možemo jednostavno izračunati valjani MAC, a budući da je tajna duga 32 znaka ne  +Budući da ne znamo tajnu vrijednost, ne možemo jednostavno izračunati valjani MAC, a, budući da je tajna duga 32 znaka, ne možemo ju ni pogoditi. Međutim, imamo valjani MAC za tekst //testni_korisnik//, a poznata nam je i duljina tajne, pa možemo izvesti napad produljenjem. \\
-možemo ju ni pogoditi. Međutim, imamo valjani MAC za tekst //testni_korisnik//, a poznata nam je i duljina tajne, pa možemo izvesti +
-napad produljenjem. +
 Koristimo alat //hash_extender// Koristimo alat //hash_extender//
  
Line 89: Line 87:
  can_read_flag" --out-data-format=fancy --secret 32</code>  can_read_flag" --out-data-format=fancy --secret 32</code>
  
-U argument //--data// postavljamo podatak "testni_korisnik" zato što za taj niz znakova imamo validni MAC, u argument //signature// stavljamo signature iz testne datoteke +U argument //--data// postavljamo podatak //testni_korisnik// zato što za taj niz znakova imamo validni MAC, u argument //signature// stavljamo MAC iz testne datoteke 
-, u argument append dodajemo tekst koji želimo nadodati na kraj datoteke (paziti da se treba dodati i newline!) te kao veličinu tajne stavljamo 32 (što smo isčitali iz koda).+, u argument append dodajemo tekst koji želimo nadodati na kraj datoteke (paziti da se treba dodati i newline!) te kao veličinu tajne stavljamo 32 (što smo iščitali iz koda). 
 + 
 +Kao ispis programa dobili smo novogenerirani validni MAC te //hexdump// novog dokumenta. Osim teksta //can_read_flag// dodana je i nadopuna (engl. padding). Alat je generirao novi MAC i za md5 i za md4 algoritam, u ovom slučaju nas zanima samo md5.
  
-Kao ispis programa dobili smo novogenerirani validni MAC te //hexdump// novog dokumenta. Osim teksta //can_read_flag// dodana je i nadopuna (engl. padding).+{{hash_extender.png}}
  
-<slika>  
  
-S hex editorom kao što su [[HxD]] ili [[xxd]] tako možemo konstruirati novu datoteku s validnim MAC-om kao prvom linijom. +S hex editorom kao što su HxD ili xxd tako možemo konstruirati novu datoteku s validnim MAC-om kao prvom linijom. Slika prikazuje //hexdump// finalne datoteke.
  
-<slika>+{{length_extension_3.png}}
  
 Kad učitamo datoteku dobijemo flag. Kad učitamo datoteku dobijemo flag.
  
-<slika> 
  
 ===Izvori=== ===Izvori===
  
 [1] https://github.com/iagox86/hash_extender [1] https://github.com/iagox86/hash_extender
length-extension-attack.1701250530.txt.gz · Last modified: 2025/12/01 11:40 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki