2012-01-21 44 views
0

我正在学习sql注入并非常感兴趣如何导致此问题。 我已经写了脚本来看看它是怎么回事。所以这里是我的代码=>导致sql注入

if (isset($_POST['act'])){ 
    if ($connection = mysqli_connect($var['host'],$var['user'],$var['password'],$var['database'])){ 
     if (mysqli_connect_errno()==0){ 
      $username = $_POST['username']; 
      $password = $_POST['pswd']; 
      if ($result = mysqli_query($connection,"SELECT username,password FROM login WHERE username='" . $username . "' AND password='" . $password . "'")){ 
       if (mysqli_num_rows($result)){ 
        header("Location: http://localhost/default.php"); 
       } else { 
        $res = "Invalid Credentials ..."; 
       } 
      } 
     } 
    } 
} 

<form name="action" method="post" action="index.php"> 
    Username:<input type="text" name="username" size="12"><br> 
    Password:<input type="password" name="pswd" size=12><br> 
    <input type="submit" name="act" value="Login"> 
</form> 

我写这样的形式,但没有用户名和密码中的形式=>一些”或‘1’=‘发生

1’

我很感兴趣如何使SQL注入打破这个脚本,并没有有效凭证重定向到如default.php(当然内标脚本)

谢谢...

+0

什么,我是指,它不是写“无效凭证”,也没有重定向。我认为这是发生SQL错误,但它不能显示在脚本 – DaHaKa

+0

你有没有尝试输入你的用户名为“或1 = 1”,并设置你的密码只是在你的窗体中? –

+0

在这种情况下,您至少应该在代码顶部添加'error_reporting(E_ALL);',以便我们可以看到您的代码返回的任何错误 – Mchl

回答

5

尝试连接的TeringBay ' OR 1 --作为用户名

此外,为了以防万一,丽泽如果你有magic_quotes_gpc禁用:)

+0

你不是说'OR 1 = 1 - '? – gdoron

+0

@gdoron'OR 1'在mysql中工作得很好 – Vyktor

+0

它被禁用:( – DaHaKa