加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

sql注入的方式有哪几种

发布时间:2022-02-12 09:21:52 所属栏目:MySql教程 来源:互联网
导读:这篇文章主要讲解了sql注入的方式有哪些,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习sql注入的方式有哪些吧! sql注入的三种方式是:1、数字型注入,当输入的参数为整型时,可能存在数字型注入漏洞;2
       这篇文章主要讲解了“sql注入的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“sql注入的方式有哪些”吧!
  
       sql注入的三种方式是:1、数字型注入,当输入的参数为整型时,可能存在数字型注入漏洞;2、字符型注入,当输入参数为字符串时,可能存在字符型注入漏洞;3、搜索型注入,在进行数据搜索时没过滤搜索参数。
 
       本教程操作环境:windows7系统、python3版、Dell G3电脑。
 
SQL 注入原理
SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。
 
SQL 注入分类
1. 数字型注入
 
当输入的参数为整型时,则有可能存在数字型注入漏洞。
 
假设存在一条 URL 为:HTTP://www.aaa.com/test.php?id=1
 
可以对后台的 SQL 语句猜测为:
 
SELECT * FROM table WHERE id=1
 
判断数字型漏洞的 SQL 注入点:
 
① 先在输入框中输入一个单引号 '
 
这样的 SQL 语句就会变为:
 
SELECT * FROM table WHERE id=1',
 
不符合语法,所以该语句肯定会出错,导致脚本程序无法从数据库获取数据,从而使原来的页面出现异常。
 
② 在输入框中输入 and 1 = 1
 
SQL语句变为:
 
SELECT * FROM table WHERE id=1 and 1 = 1
 
语句正确,执行正常,返回的数据与原始请求无任何差异。
 
③ 在数据库中输入 and 1 = 2
 
SQL 语句变为:
 
SELECT * FROM table WHERE id=1 and 1 = 2
 
虽然语法正确,语句执行正常,但是逻辑错误,因为 1 = 2 为永假,所以返回数据与原始请求有差异。
 
如果以上三个步骤全部满足,则程序就可能存在数字型 SQL 注入漏洞。
 
2. 字符型注入
 
当输入参数为字符串时,则可能存在字符型注入漏洞。数字型与字符型注入最大的区别在于:数字型不需要单引号闭合,而字符型一般需要使用单引号来闭合。
 
字符型注入最关键的是如何闭合 SQL 语句以及注释多余的代码。
 
假设后台的 SQL 语句如下:
 
SELECT * FROM table WHERE username = 'admin'
 
判断字符型漏洞的 SQL 注入点:
 
① 还是先输入单引号 admin' 来测试
 
这样的 SQL 语句就会变为:
 
SELECT * FROM table WHERE username = 'admin''。
 
页面异常。
 
② 输入:admin' and 1 = 1 --
 
注意:在 admin 后有一个单引号 ',用于字符串闭合,最后还有一个注释符 --(两条杠后面还有一个空格!!!)。
SQL 语句变为:
 
SELECT * FROM table WHERE username = 'admin' and 1 = 1 --
 
页面显示正确。
 
③ 输入:admin' and 1 = 2 --
 
SQL 语句变为:<
 
SELECT * FROM table WHERE username = 'admin' and 1 = 2 --
 
页面错误。
 
满足上面三个步骤则有可能存在字符型 SQL 注入。

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读