Injekce SQL je jedním z nejběžnějších mechanismů webových útoků, které útočníci využívají k odcizení záznamů a citlivých záznamů z obchodní platformy nebo platformy sociálních médií. Zatímco SQL Injection může ztratit jakékoli informace aplikace, která používá SQL databázi, je to míle, které se nejčastěji používá k napadení webových stránek. SQL Injection je technika vkládání kódu, kterou mohou hackeři použít k vložení škodlivých příkazů SQL do vstupních dotazů pro provedení prostřednictvím podkladové databáze SQL. Tato metoda je proveditelná kvůli nesprávnému kódování nakloněných webových balíčků. Injekce SQL se zvyšuje kvůli skutečnosti, že přístup k vstupním polím je zpřístupněn pro uživatele, kteří zadávají všechny špatné typy příkazů SQL, aby procházeli a vkládali dotazy přímo do databáze.
Zadejte tuto adresu URL do vašeho prohlížeče a získejte bonusové kategorie z tabulky:
https://insecure-website.com/products?category=Bonus
To způsobí, že aplikace vytvoří otázku SQL, aby načetla informace o relevantním zboží z databáze takto:
VYBERTE * OD zboží KDE kategorie = ‚Bonus‘ A propuštěn = 1
Tento SQL dotaz požaduje, aby databáze vrátila:
Software nevynucuje žádnou obranu proti útokům SQL injection, takže útočník může sestavit útok jako:
https://insecure-website.com/products?category=Bonus’ – –
Výsledkem výše uvedeného dotazu je:
VYBERTE * Z produktů, KDE kategorie = ‚Bonus‘–‘ A uvolněno = 1
Klíčovou součástí je, že řada dvojitých pomlček je indikátorem poznámky v SQL a znamená, že zbytek otázky je interpretován jako komentář. Tím se úspěšně zbaví zbytku dotazu, takže již nezahrnuje AND spuštěno = 1. Tímto způsobem se zobrazí každý jeden produkt, například nevydané produkty.
Další metoda pro SQL injection:
https://insecure-website.com/products?category=Bonus’+OR+1=1–
Výsledek:
VYBERTE * Z produktů, KDE kategorie = ‚Bonus‘ NEBO 1=1–‘ A uvolněno = 1
Pomocí výše uvedeného dotazu můžete snadno zaútočit na databázi.
Vynechejte přihlašovací účet pomocí níže uvedeného dotazu:
VYBERTE * OD uživatelů KDE uživatelské jméno = ‚john‘ A heslo = ‚johnwilliam‘
Útočníkův protokol s uživatelským jménem bez hesla, v dotazu SQL použijte – – heslo dvojité pomlčky a okomentujte jej v klauzuli where. Například odešlete dotaz administrátorovi uživatelského jména a prázdné pole pro heslo. Dotaz je:
SELECT * FROM users WHERE username = ‘administrator’ – – ‘ AND password =
Je to také mnoho metod pro vkládání SQL.
Jednoduchý PHP kód pro SQL Injection na přihlašovací stránce je uveden níže:
$uname = $_POST [ ‘ uname ‘ ] ;
$passwrd = $_POST [ ‘ heslo ‘ ] ;
$query = ' vybrat uživatelské jméno, předat od uživatelů, kde uživatelské jméno = ' $uname ' a heslo = ' $passwrd
$vysledek = mysql_query ( $dotaz ) ;
$rows = mysql_fetch_array ( $vysledek ) ;
If ( $rows )
{
echo ‚Úspěšně jste se přihlásili‘;
create_session();
}
jinak {
echo ‚Příště více štěstí‘;
}