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级别通关详解

  • 14
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
回答: 判断SQL注入类型的方法有多种。一种常见的方法是通过输入特定的字符或语句来测试是否存在注入漏洞。例如,当输入"and 1=2"时,如果后台执行的SQL语句中包含了这个条件,并且返回了错误信息,那么就可以判断存在逻辑注入漏洞。\[2\]另外,根据经验感觉,任何与数据库交互的地方都有可能是注入。因此,在检测网站时,可以通过击页面中的URL来判断是否存在注入。\[3\]此外,对于老旧系统和防范意识不高的前端工程师编写的网页,SQL注入漏洞可能存在。为了防范SQL注入,可以在服务器上对用户输入的值进行验证和限制,或者使用预编译的方式来查询数据库,避免与SQL语句产生闭合。 #### 引用[.reference_title] - *1* *2* [sql注入基础-如何判断 Sql 注入+实例说明](https://blog.csdn.net/m0_60884805/article/details/127257348)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [SQL注入判断注入方式](https://blog.csdn.net/HMX404/article/details/108654419)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值