SQLインジェクションに対してオープンなこのようなコードがあります。ハッキングされましたが、修正しました。このコードをハッキングするために必要な入力 (ユーザー名とパスワード) を知りたいだけです。つまり入力しても
username = something' OR 'x'='x
次に、ユーザー名に関係なく、テーブル内の最初のユーザーのパスワードを取得できます。ただし、内部では、if
このパスワードが正しいかどうかを確認します。私は、パスワードが非常に簡単 (と同じくらい簡単123456
) で、ハッカーが辞書から力ずくで作成したと想定しています。ただし、パスワードのブルートフォース以外のインジェクションを使用してこのコードをハッキングする別の方法があるかどうか疑問に思っています。
<?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...
}
?>