SQL注入点判断

Posted 盈盈的小天地

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入点判断相关的知识,希望对你有一定的参考价值。

判断是否存在注入:

http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1,首先第一步我们先进行是否存在注入的判断,先在数字1后加单引号 ‘,如果出现错误提示,则该网站可能就存在注入漏洞。原因是无论字符型还是整型都会因为单引号个数不匹配而报错。


通常 Sql 注入漏洞分为 2 种类型:数字型,字符型


数字型判断:

当输入的参 x 为整型时,通常 Sql 语句类型大致如下: 

select * from <表名> where id = x 

这种类型可以使用经典的 and 1=1 和 and 1=2 来判断:

  • http://127.0.0.1/DVWA/vulnerabilities/sqli/?id= x and 1=1 

    页面依旧运行正常,继续进行下一步。

  • http://127.0.0.1/DVWA/vulnerabilities/sqli/?id= x 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

    没有语法错误但是逻辑判断为假,所以返回错误。

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

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

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

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


字符型判断:

当输入的参数 x 为字符型时,通常SQL 语句类型大致如下:

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

这种类型我们同样可以使用 and '1'='1 和 and '1'='2来判断:

  • http://127.0.0.1/DVWA/vulnerabilities/sqli/?id= x' and '1'='1

    页面运行正常,继续进行下一步。

  • http://127.0.0.1/DVWA/vulnerabilities/sqli/?id= x' 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'

    语法正确,但逻辑判断错误,所以返回错误。






以上是关于SQL注入点判断的主要内容,如果未能解决你的问题,请参考以下文章

Sql注入之注入点类型和是否存在注入判断

SQL注入之注入点的寻找

sqlmap怎么注入sql server

关于SQL注入

求教谁给讲讲SQL注入攻击的步骤

SQL注入—— sql手动注入实操