SQL Injection: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(→Sicher) |
(→Sicher) |
||
Zeile 30: | Zeile 30: | ||
;folgende Sql Abfrage | ;folgende Sql Abfrage | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
*MariaDB [sql_injections]> select * from users where username = '' or '1' = '1'; | *MariaDB [sql_injections]> select * from users where username = '' or '1' = '1'; | ||
Zeile 48: | Zeile 41: | ||
3 rows in set (0.000 sec) | 3 rows in set (0.000 sec) | ||
;Da '1' = '1" werden alle Datensätze angezeigt | ;Da '1' = '1" werden alle Datensätze angezeigt | ||
+ | |||
=Webfrontend= | =Webfrontend= | ||
[[Datei:Sql-injection-1.png]] | [[Datei:Sql-injection-1.png]] |
Version vom 15. Juni 2021, 19:17 Uhr
Vorüberlegung
Verhaltensweise einer SQL Abfrage
- Normale Abfrage
- MariaDB [sql_injections]> select * from users where username = 'rudi.burkart';
+------+--------------+----------+ | id | username | password | +------+--------------+----------+ | 2 | rudi.burkart | secret | +------+--------------+----------+ 1 row in set (0.000 sec)
- Oder Verknüpfung
- MariaDB [sql_injections]> select * from users where username = 'rudi.burkart' or username = 'hans.will';
+------+--------------+----------+ | id | username | password | +------+--------------+----------+ | 2 | rudi.burkart | secret | | 1 | hans.will | geheim | +------+--------------+----------+ 2 rows in set (0.000 sec)
PHP Code
Unsicher
$search = $_POST['search']; $sql = "SELECT * FROM users WHERE username='$search'"; $result = mysqli_query($link, $sql);
- Diese Eingabe bewirkt nun
- folgende Sql Abfrage
- MariaDB [sql_injections]> select * from users where username = or '1' = '1';
+------+---------------+-------------+ | id | username | password | +------+---------------+-------------+ | 2 | rudi.burkart | secret | | 3 | erwin.lehmann | weisniemand | | 1 | hans.will | geheim | +------+---------------+-------------+ 3 rows in set (0.000 sec)
- Da '1' = '1" werden alle Datensätze angezeigt