Sql Injection登录绕过

时间:2016-07-27 08:25:53

标签: php login sql-injection

我试图通过绕过我自己的登录页面来练习sql注入但是我不知道如何让它容易受到sqli的攻击,你能告诉我该怎么做吗? 这是php代码:

function pulsate()
{
    // ...   
    .each("end", pulsate);
}

1 个答案:

答案 0 :(得分:1)

我希望这可以给你一个线索。

这是您的查询:

$query = "SELECT * FROM `users` WHERE username='$username' and password='$password'";

输入1 = 1不会绕过它。只需拿一张纸和一支铅笔,想象一下你的查询会是什么样子。在你的情况下将输出:

SELECT * FROM users WHERE username = '1 = 1' AND password = '1 = 1'

查询是正确的,虽然没有名为'1 = 1'的用户名,密码为'1 = 1'。

现在的漏洞:

您需要传递用户和密码参数,这是一个可以欺骗查询的字符串。

例如:

x' OR '1' = '1

什么会产生这种输入?

SELECT * FROM users WHERE username = 'x' OR '1' = '1' AND password = 'x' OR '1' = '1'

如何防止这种注射?取自OWASP

  

主要防御:

     

选项#1:使用准备好的语句(参数化查询)

     

选项#2:使用存储过程

     

选项#3:转义所有用户提供的输入

     

额外防御:

     

同时强制执行:最低权限

     

同时执行:白名单输入验证