注:本文在Jewel591 文章的基础上加以实例说明而成 原文链接

  • 1.判断是否存在 Sql 注入漏洞
  • 2.判断 Sql 注入漏洞的类型
    • 2.1 数字型判断:
    • 2.2 字符型判断:
  • 3.实例说明
    • less-1(字符型注入)
      • 数值型方法判断
      • 字符型方法判断
    • less-2(数值型注入)
      • 数值型方法判断
    • less-3(字符型注入)
      • 字符型方法判断

通常情况下,可能存在 Sql 注入漏洞的 Url 是类似这种形式 :http://xxx.xxx.xxx/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来判断:

  1. Url 地址中输入 http://xxx/abc.php?id= x' and '1'='1 页面运行正常,继续进行下一步。
  2. 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’

数值型方法判断

https://sqli.wmcoder.site/sqli-labs/Less-1/?id=1 and  1=1

https://sqli.wmcoder.site/sqli-labs/Less-1/?id=1 and  1=2

and 1=1 和 and 1=2 均回显正常,并非数字型

字符型方法判断

https://sqli.wmcoder.site/sqli-labs/Less-1/?id=1' and  '1'='1

https://sqli.wmcoder.site/sqli-labs/Less-1/?id=1' and  '1'='2

and ‘1’='1 回显正常,and ‘1’='2回显异常,说明此 Sql 注入为字符型注入。

less-2(数值型注入)

拼接方式:id=$id
id=1

数值型方法判断

https://sqli.wmcoder.site/sqli-labs/Less-2/?id=1 and  1=1

https://sqli.wmcoder.site/sqli-labs/Less-2/?id=1 and  1=2

and 1=1 回显正常 , and 1=2 均回显异常,为数字型注入

less-3(字符型注入)

拼接方式:id=(’$id’)
id=1’)

字符型方法判断

https://sqli.wmcoder.site/sqli-labs/Less-3/?id=1' and '1'='1

https://sqli.wmcoder.site/sqli-labs/Less-3/?id=1' and '1'='2

and ‘1’='1 回显正常,and ‘1’='2回显异常,说明此 Sql 注入为字符型注入。

【干货】如何判断 Sql 注入点相关推荐

  1. SQL注入分类,一看你就明白了。SQL注入点/SQL注入类型/SQL注入有几种/SQL注入点分类

    「作者主页」:士别三日wyx 「作者简介」:CSDN top200.阿里云博客专家.华为云享专家.网络安全领域优质创作者 SQL注入分类 一.数值型注入 二.字符型注入 1)单引号字符型注入 2)双引 ...

  2. sqlmap自动扫描注入点_SQLmap JSON 格式的数据注入

    现在越来越多的网站开始使用 RESTFUL 框架,数据传输使用 JSON,那么这种情况下我们如何使用 SQLmap 进行自动化注入呢? 能使用 * 指定注入点吗? 先说结论:对于 JSON 数据的 S ...

  3. abap 取日期最大_Pointer干货分享:SQL面试50题思路解答与分类整理(下)CASE与日期函数...

    这是POINT小数点的第 368篇文章点点写在前面:SQL技能是数据分析师面试中必不可少的环节,小数点数据社区也给大家提供了练习SQL题目的地方,以下是pointer Yongfan整理的SQL50题 ...

  4. ANSI标准判断sql空值与去空去空格

    ANSI标准判断sql空值与去空去空格 COALESCE()函数:判断是否NULL, ANSI 标准,适用于 sql server.Oracle .sqlite3 trim(Field) 函数: 去前 ...

  5. collapse在PHP中是什么意思,在PHP中全面禁止SQL注进式攻击之二

    在PHP中全面禁止SQL注进式攻击之一 一. 注进式攻击的类型 可能存在很多不同类型的攻击动机,但是乍看上往,似乎存在更多的类型.这是非常真实的-假如恶意用户发明了一个能够履行多个查询的措施的话.本文 ...

  6. mysql 输出判断,mysql判断_mysql判断SQL语句是否执行成功的方法

    摘要 腾兴网为您分享:mysql判断SQL语句是否执行成功的方法,中国体育,智慧党建,月星家居,虚拟按键等软件知识,以及闪点卡密,proxycap,大众车联网,平顶山软件,人格测试,ok支付,美图秀秀 ...

  7. 判断SQL是否为最优查询语句

    判断SQL是否为最优查询语句 判断SQL是否为最优查询语句,只需要在SQL前面加上explain 例如: 下面对各个属性进行了解: 1.id:这是SELECT的查询序列号 2.select_type: ...

  8. SQL注入(SQL注入(SQLi)攻击)攻击-注入点

    SQL注入被称为漏洞之王 , 是最常用的漏洞之一 , 其中PHP在这方面的贡献最大 SQL注入原理 用户在参数中插入恶意的SQL语句 , 破坏原有的SQL语法结构 , 从而执行攻击者的操作 SQL注入 ...

  9. server sql 判断是否是当天_判断sql server 是否在开启服务状态

    vb编写的软件,在系统开机时,应用程序会比sqlserver启动快,造成连接不上数据库的错误. 有什么办法可以先判断一下sql server服务的状态,如果没开启先开启服务,在去连接sql服务. 从网 ...

最新文章

  1. 使用uniapp开发婚庆应用的时候开发公共组件请求网络数据的方式
  2. Android中使用DOM解析xml时出现org.xml.sax.SAXParseException: Unexpected token
  3. js const 和 var 的区别
  4. ProxyShell利用分析1——CVE-2021-34473
  5. GitHub入门与实践 读书笔记一:欢迎来到GitHubde世界
  6. kotlin实现流读取
  7. 在 Apex 代码中生成 csv 文件
  8. pythonjieba分词_$好玩的分词——python jieba分词模块的基本用法
  9. 转:Google的系统工程师(SA)如何工作
  10. 编程猫海龟编辑器python_编程猫海龟编辑器
  11. Atitit 短信验证的漏洞 目录 1.1. APP读取短信 1 1.2. 手机上访问的业务来说,短信验证码就没那么独立了 1 1.3. 短信保管箱” 1 1.4. 自动把短信备份到云端的功能。 2
  12. 史上最全的黑苹果系统「MacOS」安装教程,小白也能秒掌握!
  13. 实验11 B样条曲面生成
  14. install在python里什么意思_“pip install”和“python-m pip install”有什么区别?
  15. python 相关系数_Python计算皮尔逊 pearson相关系数
  16. 三层交换机光模块故障排除流程
  17. 书到用时方恨少,一大波JS开发工具函数来了
  18. Java字符和数字列对齐_字符串(包含中英文、数字、符号)的对齐
  19. FrameMaker从零到学习编码
  20. 将一个文字的大集合按照第一个文字的首字母进行切分

热门文章

  1. 常用api查询网站记录
  2. c语言练习题:求1-1/2+1/3-1/4+... -1/100的值
  3. Chrome JS断点调试技巧
  4. ExtJs6获取form里的数据
  5. 设计模式——策略模式详解
  6. iOS开发-retain/assign/strong/weak/copy/mutablecopy/autorelease区别
  7. Servlet的学习之Request请求对象(3)
  8. hdu 1027 输出第m个全排列(next_permutation)
  9. mysql -数据库(备份与恢复)
  10. 解决不同浏览器下载excel文件中文名称乱码问题