Hacking PHP-code mit SQL-injection
Ich habe einige code wie dieser ist offen für SQL-injection. Wir haben gehackt und nun haben wir es festgelegt. Ich möchte nur wissen, was die Eingaben (Benutzername und Kennwort) sein müssen, um diesen hack code. Ich meine, auch wenn Sie Eingang
username = something' OR 'x'='x
Dann können Sie abrufen, das Passwort des ersten Benutzers in der Tabelle unabhängig von den Benutzernamen. Jedoch, im inneren der if
überprüfen wir, ob das Passwort korrekt ist. Ich gehe davon aus, dass das Passwort war sehr leicht (so leicht wie 123456
) und der hacker aus einem brute-force aus einem Wörterbuch. Allerdings Frage ich mich, ob es einen anderen Weg, um diesen hack code mit einigen Injektion andere als brute-forcing das Passwort.
<?php
$username=$_POST['username'];
$password=$_POST['password'];
$result=runQuery("SELECT password FROM tbl_users WHERE username='".$username."''");
$row=mysql_fetch_array($result);
if($row['password']==$password){
-- do sth... create a cookie etc..
}
else{
--go to another page...
}
?>
- Ich glaube nicht, dass Sie Lesen über sql-injection.
- Diese Frage scheint off-topic, weil es ein code-review-Anfrage. Dies ist besser geeignet, um codereview.stackexchange.com
- Zum Schutz vor sql-injection, die Sie verwenden müssen
PDO
odermysqli
. Sie sind auch nicht entkommen Sie Ihre Eingabe in Ihrem Beispiel. Wie Mike schon sagte, ich glaube nicht wirklich, dass Sie alles Lesen über sql-injection in den ersten Platz. - Benutzername:
Bobby'; DROP TABLE tbl_users; --
- Ich denke, Sie sind fehlt das Leerzeichen am Ende der Injektion 😉
- Was war die Wirkung der hacken?
- Was ist die url, können wir nicht testen, es anders.... 😉
- Ich hatte noch nie davon gehört, danke. OP, Lesen Sie über paramaterized Abfragen. Wenn Sie an einer website arbeiten, die eine log-in-system, sollten Sie mit vertraut sein und wissen, wie Sie zu beheben/vermeiden Sie die OWASP top ten Sicherheitsrisiken. Hier die Nummer 1 ist SQL-injection.
- Der hacker nicht drop eine Tabelle oder so etwas. Der Tisch war es, das Kennwort wurde nicht aktualisiert. Dieses Benutzerkonto wird verwendet für das hinzufügen von einen kurzen Kommentar zu einer Wand. Es gab Kommentare der hacker an der Wand.. und die tbl_users war unberührt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Variable Bindung im PDO-Bibliothek.
Wenn hacker-pass " - Wert:
$username = "' OR * OR '"
dann Abfrage:
SELECT password FROM tbl_users WHERE username='' OR * OR '';
- diese werden wählen Sie alle Benutzer.Aber hacker können:
$username = "'; DELETE * FROM tbl_users WHERE username = * OR '";
SELECT password FROM tbl_users WHERE username = ''; DELETE * FROM tbl_users WHERE username = * OR '';
Oder können aus
UPDATE
ändern jedes Passwort.Sicherheit?
mysql_real_escape_string
oderpreg_match("/^[a-zA-Z0-9]{3,15}$/", $username)
zum Beispiel.error_reporting
ist, dieses Auslaufen kann. Auch hacker können versuchen, zufällige Abfrage-KombinationenBoolesche blind oder Zeit blind injection hacker abrufen können alle die Struktur der Datenbank.
Beispiel:
Diese Abfrage gonna take 10 Sekunden, um zurückzukehren und zu bestätigen, dass Ihr Zustand ist
true
oderfalse
. Verwenden Sie die information_schema-und SQL-Bedingung testen können Sie abrufen, alle Datenbanken, die Informationen.