Flagů už moc nezbývá, pojďme se tedy podívat na další dva.
Flag 7: „Včera, dnes a zítra“
Tyto flagy byly zaměřeny na databázi. V robots.txt jsme se dozvěděli o existenci souboru backup.sql. To však byla ošklivá nástraha a při pokusu o jeho stažení jsme získali ban. Cesta to ale nabyla úplně slepá a získali jsme nápovědu, že podobné soubory je dobré zkomprimovat – backup.sql.gz byl už na dosah.
Při prohlídce dumpu databáze jsme mohli vidět odkazy na některé již ulovené flagy, ale v tabulce ctf_options jsme nalezli i zvláštní vlastnost flag7_option a první polovinou tohoto klíče.
Někdy nás však stará hodnota nezajímá a chtěli bychom spíše přítomnost. Cílem tedy bylo zjistit jakou hodnotu má flag7_option nyní. K tomu bylo potřeba získat přístup k živé databázi. Možností zde bylo více.
Tu první nám prozradil wp-scan, který poukázal na použití pluginu se zranitelností typu SQL injection. Po prozkoumání zranitelného kódu a několika pokusech na živém webu stačilo jen připravit dotaz, který nám hodnotu z databáze vyčetl. Drobným zádrhelem zde mohl být fakt, že plugin nahrazuje mezery za znak %, to však šlo jednoduše obejít náhradou mezer za prázdný komentář v našem payloadu.
K získání informací z databáze bylo samozřejmě možné použít automatizovaný nástroj SQLmap, nicméně cesta s UNION SELECT je trochu elegantnější.
Díky této zranitelnosti jsme zkompletovali sedmou sadu flagů.
Flag 8: „Heslo, heslo, heslíčko“
Při zkoumání databáze bylo možné narazit na další z flagů. Zjistili jsme, že zde existují 3 další uživatelé WordPressu – flag8a, flag8b a flag8c. Každý z nich používal jiný hash hesla – staré jednoduché MD5, aktuální PHPASS a moderní BCRYPT. Máme tedy 3 hashe a z principu pravidel naší CTF soutěže tak víme, že každý bude složen z 4 číslic. Stačilo je tedy cracknout a to nebylo vůbec složité.
V ukázce jsme na to použili nástroj John the Ripper s maskou pro 4 číslice: john --mask=?d?d?d?d --format=raw-md5 soubor-s-hashi.txt
MD5 byla prolomena ve zlomku vteřiny. PHPASS netrval o mnoho déle i když drobné zpomalení bylo znát. Na BCRYPT jsme si museli několik minut počkat.
Při použití grafické karty bychom samozřejmě měli výsledky mnohem dříve.
Prolomením všech 3 hashů jsme získali další klíč.
Alternativní cestou k získaní informací z databáze byl fakt, že na webu byl zapomenutý nástroj Adminer (skvělý tool, ale stejně jako PHPmyAdmin ho není rozumné nechávat přístupný). Z wp-scanu jsme dále zjistili, že je na webu přístupný swap soubor .wp-config.php.swp, který vznikl při úpravě konfiguračního souboru na produkci editorem vim. Po stažení jsme získali přístupové údaje k databázi. Skoro…
Heslo bohužel nebylo v souboru přítomné, protože bylo získáno pomoci proměnné prostředí „dbpass“. Proměnné prostředí lze však vyčíst z výpisu phpinfo(), který jsme již dříve objevili v souboru phpinfo.php. S těmito znalostmi tak nebyl problém získat přístup do databáze mnohem pohodlněji.
Do příště nám zbývá už jen poslední flag 9, na kterém si mnoho soutěžících vylámalo zuby.