首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过编程方式检查是否存在SQL注入漏洞?

如何通过编程方式检查是否存在SQL注入漏洞?
EN

Stack Overflow用户
提问于 2011-02-08 15:10:16
回答 3查看 13.1K关注 0票数 0

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

它怎麽工作?

EN

回答 3

Stack Overflow用户

发布于 2011-02-08 15:18:00

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

例如,对于易受攻击的用户名/密码验证码,它在大多数情况下将类似于:

代码语言:javascript
复制
select count(*) from users where username=@username and password=@password;

所以黑客会尝试注入一些东西,比如:

代码语言:javascript
复制
@username=" 'blabla' or 1=1  "
@password=" 'blabla' or 1=1  "

因此,结果是count(*)将大于0,因此接受登录。

票数 1
EN

Stack Overflow用户

发布于 2011-02-08 15:25:14

一种简单的测试方法是在输入字段中放入一个单引号,看看是否会返回mysql错误消息。

如果你得到类似于“你的SQL语法中有一个错误;检查与你的MySQL服务器版本相对应的手册,找到正确的语法使用在‘在第一行。”

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

如果你只是得到一个通用的“没有这样的用户名”或者一个有效的空结果集,那么你很可能没有注入漏洞。

票数 0
EN

Stack Overflow用户

发布于 2011-02-08 15:29:42

许多这样的工具都有一些参数列表,这些参数可以用来破坏网页。它们在多个requestsm中触发这些参数,并将参数插入:

  1. 表单字段
  2. Headers

他们的工具通常会爬行网站,以确保他们尽可能多地访问网站。

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

SQL

  • HTTP响应代码(500服务器错误可能意味着SQL is invalid)

  • Size of return page

  • 页面返回

所用的时间

话虽如此,如果您确实可以访问站点的源代码,则可以使用静态分析技术来查找漏洞。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4930474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档