Hi @all
War schon lange nicht mehr hier.
Also ich hab mich heute morgen mal rangesetzt um ein bischen mit SQL Injections herumzuspielen.
Da musste ich feststellen, dass diese fast unmöglich sind.
Hier mein 1. Code:
PHP
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>SQL Injection</title>
</head>
<body>
<?php
include_once 'mysql.php';
if(MySQL::connect() === MySQL::MySQL_Success)
{
if(isset($_GET['check']))
{
echo 'name="'.$_POST['username'].'" AND password="'.md5($_POST['password']).'"';
$result = MySQL::count_entry('users', 'name="'.$_POST['username'].'" AND password="'.md5($_POST['password']).'"');
if($result == 1)
{
echo '<h1>Success</h1>';
}
else
{
echo '<h1>LOL</h1>';
}
}
else
{
echo '<h1>Login</h1>';
echo '<form action="SQL_Injection.php?check=1" method="POST">';
echo '<p>Username:<br><input name="username" type="text" size="30" /></p>';
echo '<p>Password:<br><input name="password" type="password " size="30" /></p>';
echo '<p><input type="submit" value=" Absenden "></p>';
echo '</form>';
}
}
else
{
echo '<p style="font-weight: bolder; font-size: 48px; font-family: Arial;">Leider keine Datenbank!</p>';
}
?>
</body>
</html>
Alles anzeigen
Falls nun die Eingabe beim Feld "Username" == {administrator" or "1"=="1} ist und bei Passwort == {aei" or "1"=="1}
Dann funktioniert es auch nicht da das ganze Passwortfeld in md5 verschlüsselt wird.
Querry: name="administrator" or "1"=="1" AND password="a609b99b7ef9fb9652b330170242eeb8"
Hab ich da einen Überlegungsfehler? Falls nein müsste man sehr schlecht programmieren um eine SQL Injection möglich zu machen.