View on GitHub

Sikkerhetsdagen 2022 CTF @ UiA

Kul webapp #3

Kul webapp #3

Noen sa at forrige login system ikke var optimalt… Det skal fungere mye bedre nå!

ctf.uiactf.no:3006


Nettsiden:

Disse hashing funksjonene er helt magiske! Det er mulig å sende epost til meg, men jeg lover å ikke svare! :)

Her hintes det til at passord-hashing har blitt implementert. Det fikk meg til å tenkte på magic hashes.

Dette er hasher som starter med 0e og hvor resten av hashen inneholder kun [0-9] (ikke [a-f]). I PHP kan dette føre til en feil i sammenligningen av to hasher dersom man bruker ==-operatoren for sammenligning istedet for ===-operatoren.

Eksempel på sårbar kode:

<?php
    if('0e519231' == '0e958123') {
        print ("True\n");
    }else {
        print ("False\n");
    }
?>

// Result: True

Liste over magic hashes: https://github.com/spaze/hashes/blob/master/md5.md

La oss ta utgangspunkt i følgende hasher:

Strengen QLTHNDT tilsvarer MD5-hashen 0e405967825401955372549139051580 og strengen JH4cGnwKzd0y tilsvarer MD5-hashen 0e545428394516071575146741684795.

La oss si at passordet til admin@minkulewebapp.finnesikke er JH4cGnwKzd0y, som er et ganske bra passord, men hvor hashen altså er en magic hash. Da vil vi kunne bruke hvilket som helst annet passord som også har en magic hash. F.eks.: QLTHNDT.

Eksempel:

php > echo (hash('md5', 'QLTHNDT', false) == hash('md5', 'JH4cGnwKzd0y', false)) ? "TRUE" : "FALSE";
// Resultat:
TRUE

La oss prøve QLTHNDT som passord:

Vi ble logget inn! Når vi laster http://ctf.uiactf.no:3006/index.php igjen ser vi følgende:

Flagg

UIACTF{må være obs på strict vs loose comparison}