Kategori
Webb
Beskrivning
Kung Harald, som vill upplevas som modern och i teknisk framkant, har börjat blogga. Nu sprider han dålig stämning även på nätet och trollar i kommentarsfälten.
Platformen han använder verkar ganska minimalistisk i den grafiska upplevelsen och Harriet misstänker att den kanske innehåller brister även i det tekniska. Kan du hjälpa henne att ta sig in i systemet?
Lösning
Förstasidan på utmaningssidan ger oss två möjligheter, “Logga in” eller “Registrera”.
Registrerar man en användare och loggar in så får man tillgång till bloggen. Det finns en textruta för att skriva egna inlägg, och två länkar, en som visar alla inlägg och en som visar sina egna inlägg.
Själva inläggsfunktionaliteten verkar inte vara sårbart för någon form av attack, så det enda vi kan skicka in data till är användarnamnet. Testar vi lite olika typer av SQL Injection-payloads som användarnamnet, t.ex. ' OR 'a'='a';--
, och sedan klickar på länken för mina inlägg så får vi upp alla inlägg i systemet.
Vi kan nu testa att använda UNION för att hämta ut data ur andra tabeller. Vi kan t.ex. använda ' UNION SELECT 1,2;--
för att se att identifiera att det finns två kolumner som hämtas ut i SQL-frågan. Identifiering av DBMS visar att det är en SQLite-databas. För att hämta ut tabellnamnen kan vi använda ' UNION SELECT 1, name FROM sqlite_master;--
.
För att hämta ut kolumnnamn från tabellen FLAGS
kan vi använda ' UNION SELECT 1, sql FROM sqlite_master WHERE tbl_name = 'FLAGS';--
. Vi får då fram att det finns en kolumn som heter Flag
. För att hämta ut flaggan kan vi använda ' UNION SELECT 1, Flag FROM FLAGS;--
.
Flagga: undut{grattis-till-flaggan}