Jak na SQL Injection

Co je SQL Injection (SQLi)?

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.

Různé typy injekcí



  • Upravte SQL dotaz a načtěte další informace z databáze, dá se říci načítání skrytých dat z tabulek.
  • Zasahujte do obchodní logiky a upravte dotaz, abyste změnili logiku aplikace.
  • Získejte data z různých tabulek v databázi a zaútočte na ně, tomu se říká útoky UNION.
  • Zkoumání databáze, ve kterém můžete extrahovat informace o verzi a struktuře databáze.

Získejte skrytá data

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:

  • všechny informace (*)
  • Z pultu produktů
  • Kde je kategorie Bonus
  • A vydáno je 1

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.

Změňte aplikační logiku

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.

Jak SQL Injection na přihlašovací stránce

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í‘;
}