微信小程序从零快速开发,如何利用FinClip技术确保合规与数据安全
1142
2022-09-11
SQL 注入详解 SQL 注入详解
SQL 注入原理
SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。
SQL 注入分类1. 数字型注入当输入的参数为整型时,则有可能存在数字型注入漏洞。
假设存在一条 URL 为:HTTP://aaa.com/test.php?id=1可以对后台的 SQL 语句猜测为:SELECT * FROM table WHERE id=1
判断数字型漏洞的 SQL 注入点:① 先在输入框中输入一个单引号 '这样的 SQL 语句就会变为:SELECT * FROM table WHERE id=1',不符合语法,所以该语句肯定会出错,导致脚本程序无法从数据库获取数据,从而使原来的页面出现异常。
② 在输入框中输入 and 1 = 1SQL语句变为:SELECT * FROM table WHERE id=1 and 1 = 1语句正确,执行正常,返回的数据与原始请求无任何差异。
③ 在数据库中输入 and 1 = 2SQL 语句变为: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 注入。
3. 其他类型其它类型比如Cookie 注入、POST 注入、延时注入等。
POST注入:注入字段在 POST 数据中Cookie注入:注入字段在 Cookie 数据中延时注入:使用数据库延时特性注入搜索注入:注入处为搜索的地方base64注入:注入字符串需要经过 base64 加密
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~