如何检查是否存在SQL注入漏洞编程?

时间:2011-02-08 07:10:16

标签: security sql-injection

我看到一些黑客工具可以找到自动注入SQL注入漏洞的网页。

它是如何运作的?

3 个答案:

答案 0 :(得分:1)

通常,人们可以对SQL代码结构进行有根据的猜测,以允许注入。

例如,使用易受攻击的用户名/密码验证码,在大多数情况下会是这样的:

select count(*) from users where username=@username and password=@password;

所以黑客会尝试注入类似的内容:

@username=" 'blabla' or 1=1  "
@password=" 'blabla' or 1=1  "

所以结果是count(*)将是> 0,因此登录被接受。

答案 1 :(得分:0)

一个简单的测试可以是在输入字段中输入单引号,看看是否收到了mysql错误消息。

如果你得到类似'你的SQL语法错误;查看与您的MySQL服务器版本对应的手册,以便在第1行''''附近使用正确的语法

或者如果你得到一个php / mysql错误(可能通过其格式或常见错误消息以编程方式识别),那么你也知道你有一个注入漏洞。

如果您只是获得通用的“无此用户名”或有效的空结果集,那么您很可能没有注入漏洞。

答案 2 :(得分:0)

许多这些工具都有已知会破坏网页的参数列表。它们在多个请求中关闭这些参数,插入参数:

  1. 表单字段
  2. GET网址
  3. HTTP标头
  4. 他们的工具通常会抓取网站以确保他们尽可能多地访问网站。

    其中一个棘手的问题是确定何时找到可利用的网页。在某些情况下,Web服务器可能需要更长时间来重新调整页面,或者页面的某些部分可能略有不同。要检查的事项:

    1. HTTP响应代码(500服务器错误可能意味着SQL无效)
    2. 返回页面的大小
    3. 页面返回的时间
    4. 说了这么多,如果你真的可以访问网站的源代码,你可以使用静态分析技术来寻找漏洞。