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:32] 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_flagi 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, abudući da je tajna duga 32 znakane 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 +Koristimo alat //hash_extender//
-napad produljenjem. +
- +
-Koristimo alat "hash_extender+
  
 <code>./hash_extender --data=testni_korisnik --signature=0cad728d48584e1650aaf9e978690111 --append=" <code>./hash_extender --data=testni_korisnik --signature=0cad728d48584e1650aaf9e978690111 --append="
  can_read_flag" --out-data-format=fancy --secret 32</code>  can_read_flag" --out-data-format=fancy --secret 32</code>
  
-U argument "--datapostavljamo podatak "testni_korisnikzato što za taj niz znakova imamo validni MAC, u argument "signaturestavljamo 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 č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" dodan je i "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.1701250327.txt.gz · Last modified: 2025/12/01 11:40 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki