admin管理员组文章数量:1487745
【干货】如何判断 Sql 注入点
通常情况下,可能存在 Sql 注入漏洞的 Url 是类似这种形式 :/abcd.php?id=XX
对 Sql 注入的判断,主要有两个方面:
- 判断该带参数的 Url 是否存在 Sql 注入?
- 如果存在 Sql 注入,那么属于哪种 Sql 注入?
可能存在 Sql 注入攻击的 ASP/PHP/JSP 动态网页中,一个动态网页中可能只有一个参数,有时可能有多个参数。有时是整型参数,有时是字符串型参数,不能一概而论。总之只要是带有参数的 动态网页且此网页访问了数据库,那么就有可能存在 Sql 注入。如果程序员没有足够的安全意识,没有进行必要的字符过滤,存在SQL注入的可能性就非常大。
1.判断是否存在 Sql 注入漏洞
最为经典的单引号判断法:
在参数后面加上单引号,比如: http://xxx/abc.php?id=1'
如果页面返回错误,则存在 Sql 注入。
原因是无论字符型还是整型都会因为单引号个数不匹配而报错。
(如果未报错,不代表不存在 Sql 注入,因为有可能页面对单引号做了过滤,这时可以使用判断语句进行注入,因为此为入门基础课程,就不做深入讲解了)
2.判断 Sql 注入漏洞的类型
通常 Sql 注入漏洞分为 2 种类型:
- 数字型
- 字符型
其实所有的类型都是根据数据库本身表的类型所产生的,在我们创建表的时候会发现其后总有个数据类型的限制,而不同的数据库又有不同的数据类型,但是无论怎么分常用的查询数据类型总是以数字与字符来区分的,所以就会产生注入点为何种类型。
2.1 数字型判断:
当输入的参 x 为整型时,通常 abc.php 中 Sql 语句类型大致如下:select * from <表名> where id = x
这种类型可以使用经典的 and 1=1 和 and 1=2 来判断:
- Url 地址中输入
http://xxx/abc.php?id= x and 1=1
页面依旧运行正常,继续进行下一步。 - Url 地址中继续输入
http://xxx/abc.php?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 的逻辑判断,所以不会出现以上结果,故假设是不成立的。
2.2 字符型判断:
当输入的参 x 为字符型时,通常 abc.php 中 SQL 语句类型大致如下:select * from <表名> where id = 'x'
这种类型我们同样可以使用 and ‘1’='1 和 and ‘1’='2来判断:
- Url 地址中输入
http://xxx/abc.php?id= x' and '1'='1
页面运行正常,继续进行下一步。 - Url 地址中继续输入
http://xxx/abc.php?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'
语法正确,但逻辑判断错误,所以返回正确。同学们同样可以使用假设法来验证。
3.实例说明
less-1(字符型注入)
拼接方式:id=’$id’ id=1’
数值型方法判断
代码语言:javascript代码运行次数:0运行复制/sqli-labs/Less-1/?id=1 and 1=1
/sqli-labs/Less-1/?id=1 and 1=2
and 1=1 和 and 1=2 均回显正常,并非数字型
字符型方法判断
代码语言:javascript代码运行次数:0运行复制/sqli-labs/Less-1/?id=1' and '1'='1
/sqli-labs/Less-1/?id=1' and '1'='2
and ‘1’='1 回显正常,and ‘1’='2回显异常,说明此 Sql 注入为字符型注入。
less-2(数值型注入)
拼接方式:id=$id id=1
数值型方法判断
代码语言:javascript代码运行次数:0运行复制/sqli-labs/Less-2/?id=1 and 1=1
/sqli-labs/Less-2/?id=1 and 1=2
and 1=1 回显正常 , and 1=2 均回显异常,为数字型注入
less-3(字符型注入)
拼接方式:id=(’$id’) id=1’)
字符型方法判断
代码语言:javascript代码运行次数:0运行复制/sqli-labs/Less-3/?id=1' and '1'='1
/sqli-labs/Less-3/?id=1' and '1'='2
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-10-12,如有侵权请联系 cloudcommunity@tencent 删除数据库sql后台漏洞数据类型and ‘1’='1 回显正常,and ‘1’='2回显异常,说明此 Sql 注入为字符型注入。
本文标签: 干货如何判断 Sql 注入点
版权声明:本文标题:【干货】如何判断 Sql 注入点 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/shuma/1754883822a3180819.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论