0


sql注入基础-如何判断 Sql 注入点+实例说明

概述:

可能存在注入的url形式:http://xxx.xxx.xxx/abcd.php?id=XXX

判断sql注入:

1.判断此url是否存在sql注入

2.若存在sql注入,属于那种?

可能存在 Sql 注入攻击的 ASP/PHP/JSP 动态网页中,可能有一个或多个参数,有时是整数型,有时是字符型,不能一概而论。总之,只要是 带有参数的 动态网页,且访问了数据库,就有可能存在sql注入。如果程序员没有足够的安全意识,没有进行必要的字符过滤,存在SQL注入的可能性就非常大。

1.判断此url是否存在sql注入

最为经典的单引号判断法:

在参数后面加上单引号,比如: http://xxx/abc.php?id=1',若页面返回错误,则存在 Sql 注入。

解释:无论字符型还是整型都会因为单引号个数不匹配而报错

(如果未报错,不代表不存在 Sql 注入,因为有可能页面对单引号做了过滤,这时可以使用判断语句进行注入。)

2.判断 Sql 注入漏洞的类型

通常 Sql 注入漏洞分为 2 种类型:

  • 数字型
  • 字符型

2.1 数字型判断:

  • 可以使用经典的 and 1=1 和 and 1=2 来判断:

url中输入?id=1 and 1=1 页面依旧正常运行,继续下一步

url中输入?id=1 and 1=2 页面运行错误,则说明此 Sql 注入为数字型注入。

解释:当输入 and 1=1时,后台执行 Sql 语句:select * from <表名> where id = x and 1=1,语法正确且逻辑判断为正确,所以返回正常。

当输入 and 1=2时,后台执行 Sql 语句:select * from <表名> where id = x and 1=2,语法正确但逻辑判断为假,所以返回错误。

  • 使用假设法来验证:

假设,果这是字符型注入的话,我们输入以上语句之后应该出现如下情况:

当输入1 and 1=1,1 and 1=2时,后台执行 Sql 语句:

select * from <表名> where id = 'x and 1=1'
select * from <表名> where id = 'x and 1=2'

查询语句将 and 语句全部转换为了字符串,并没有进行 and 的逻辑判断,所以不会出现以上结果,故假设是不成立的。

2.2 字符型判断:

  • 可以使用 and ‘1’='1 和 and ‘1’='2来判断:

url中输入1' and '1' = '1,页面运行正常,继续进行下一步。

url中继续输入1' and '1' = '2,页面运行错误,则说明此 Sql 注入为字符型注入。

解释:

当输入 and ‘1’='1时,后台执行 Sql 语句:select * from <表名> where id = 'x' and '1'='1'语法正确,逻辑判断正确,所以返回正确。

当输入 and ‘1’='2时,后台执行 Sql 语句:select * from <表名> where id = 'x' and '1'='2'语法正确,但逻辑判断错误,所以返回异常。

同样可以使用假设法来验证。

实例说明

进入DVWA靶场练习

DVWA为一漏洞靶场,具体详细搭建方式可见 渗透初识之DVWA靶场搭建及使用(详细图文)

字符型注入

1.判断是否存在注入。

输入’,也买你返回数据库报错信息,存在sql注入,且数据库类型暴露

2.判断sql注入漏洞类型(数值型方法判断

输入1 and 1=1,页面返回正常

继续输入1 and 1=2,页面返回正常无变化,并非数字型

字符型方法判断

输入1' and '1'='1,页面返回正常

继续输入1' and '1'='2,页面无返回,页面无反应,即回显异常,说明此 Sql 注入为字符型注入

数字型注入

1.判断是否存在注入。

输入’,也买你返回数据库报错信息,存在sql注入,且数据库类型暴露

2.判断sql注入漏洞类型(数值型方法判断)

输入1 and 1=1,页面返回正常

继续输入1 and 1=2,页面无回显,返回异常,为数字型注入。

字符型方法判断

输入1' and '1'='1,页面报错,引号出错,无法执行。

具体冲关方法可移至DVWA-SQL Injection级别通关详解


本文转载自: https://blog.csdn.net/m0_60884805/article/details/127257348
版权归原作者 m0_在京菜菜子 所有, 如有侵权,请联系我们删除。

“sql注入基础-如何判断 Sql 注入点+实例说明”的评论:

还没有评论