Web网络安全分析SQL注入绕过技术原理
目录
- SQL注入绕过技术
- 大小写绕过注入
- 双写绕过注入
- 编码绕过注入
- 内联注释绕过注入
- SQL注入修复建议
- 过滤危险字符
- 使用预编译语句
SQL注入绕过技术
大小写绕过注入
使用关键字大小写的方式尝试绕过,如And 1=1(任意字母大小写都可以,如aNd 1=1,AND 1=1等),就可以看到访问id=1 And 1=1时页面返回与id=1相同的结果,访问id=1 And 1=2时页面返回与id=1不同的结果,得出存在SQL注入漏洞的结论。
使用order by查询字段数量,还是利用修改关键字大小写来绕过它,尝试只改order这个单词,结果发现order改成Order后,页面显示正常,说明by并没有被拦截,最终通过尝试。
接着,使用Union方法完成此次注入,如果仍然遇到关键字被拦截,则尝试使用修改大小写的方式绕过拦截。
双写绕过注入
关键字and被过滤时,可以尝试使用双写的方式绕过,如anandd 1=1,当and被过滤后,anandd变成了and,所以这时传入数据库的语句是and 1=1。
当访问id=1 order by 3时,如果MySQL的错误信息为“der by 3”,说明这里并没有过滤order整个单词,而是仅过滤or,因此只需要双写or即可。
后面的注入过程与Union注入的一致。
编码绕过注入
如果发现关键字and被拦截,可以尝试使用URL全编码的方式绕过拦截。由于服务器会自动对URL进行一次URL解码,所以需要把被拦截的关键字编码两次。这里需要注意的是,URL编码需选择全编码,而不是普通的URL编码。关键字and进行两次URL全编码的结果是%25%36%31%25%36%65%25%36%34。
内联注释绕过注入
内联注释绕过即将被拦截的关键字写在注释中,通过内敛的写法执行完整语句,例如id=1 /*!and*/ 1=1。
SQL注入修复建议
常用的SQL注入漏洞修复建议有两种。
过滤危险字符
多数CMS都采用过滤危险字符的方式,例如,采用正则表达式匹配union、sleep、load_file等关键字,如果匹配到,则退出程序。
使用预编译语句
使用PDO预编译语句,需要注意的是,不要将变量直接拼接到PDO语句中,而是使用占位符进行数据库的增加、删除、修改、查询。
以上就是Web网络安全分析SQL注入绕过技术原理的详细内容,更多关于Web网络安全SQL注入绕过技术的资料请关注我们其它相关文章!
相关推荐
-
Web安全解析报错注入攻击原理
目录 1.报错注入攻击 2.报错注入代码分析 1.报错注入攻击 报错注入攻击的测试地址:http://127.0.0.1/sqli/error.php?username=1. 访问该网址时,页面返回ok,如图28所示. 图28 访问username=1时页面的的结果 访问http://127.0.0.1/sqli/error.php?username=1',因为参数username的值是1',在数据库中执行SQL时,会因为多了一个单引号而报错,输出到页面的结果如图29所示. 图29 访问user
-
Web网络安全分析二次注入攻击原理详解
目录 二次注入攻击 二次注入代码分析 二次注入攻击 二次注入攻击的测试地址:http://127.0.0.1/sqli/double1.php?username=test 和 http://127.0.0.1/sqli/double2.php?id=1. 其中,double1.php页面的功能是注册用户名,也是插入SQL语句的地方:double2.php页面的功能是通过参数ID读取用户名和用户信息. 第一步,访问double1.php?username=test',如图40所示. 图40 注册用
-
Web网络安全分析Union注入攻击原理详解
目录 1.Union注入攻击 2.Union注入代码分析 1.Union注入攻击 Union注入攻击的测试地址:http://127.0.0.1/sqli/union.php?di=1. 访问该网址时,页面返回的结果如图6所示. 图6 访问id=1时页面的结果 在URL后添加一个单引号,再次访问,如图7所示,页面返回结果与id=1的结果不同. 图7 访问id=1'时页面的结果 访问id=1 and 1=1,由于and 1=1为真,所以页面应返回与id=1相同的结果,如图8所示.访问id=1 an
-
Web网络安全解析cookie注入攻击原理
目录 cookie注入攻击 cookie注入代码分析 cookie注入攻击 cookie注入攻击的测试地址:http://127.0.0.1/sqli/cookie.php. 发现URL中没有GET参数,但是页面返回正常,使用Burp Suite抓取数据包,发现cookie中存在id=1的参数,如图56所示. 图56 cookie数据 修改cookie中的id=1为id=1',然后再次访问该URL,发现页面返回错误.接下来,分别修改cookie中id=1 and 1=1和id=1 and 1=2
-
Web网络安全分析XFF注入攻击原理详解
目录 XFF注入 XFF注入代码分析 XFF注入 XFF注入攻击的测试地址:http://127.0.0.1/sqli/xff.php. X-Forwarded-for简称XFF头,它代表客户端真实的IP,通过修改X-Forwarded-for的值可以伪造客户端IP.通过Burp Suite住区数据包内容,将X-Forwarded-for设置为11.22.33.44,然后访问改URL,页面返回正常,如图62所示. 图62 XFF头 将X-Forwarded-for设置为11.22.33.44',
-
Web网络安全分析SQL注入绕过技术原理
目录 SQL注入绕过技术 大小写绕过注入 双写绕过注入 编码绕过注入 内联注释绕过注入 SQL注入修复建议 过滤危险字符 使用预编译语句 SQL注入绕过技术 大小写绕过注入 使用关键字大小写的方式尝试绕过,如And 1=1(任意字母大小写都可以,如aNd 1=1,AND 1=1等),就可以看到访问id=1 And 1=1时页面返回与id=1相同的结果,访问id=1 And 1=2时页面返回与id=1不同的结果,得出存在SQL注入漏洞的结论. 使用order by查询字段数量,还是利用修改关键字大
-
Web网络安全分析Base64注入攻击原理详解
目录 Base64注入攻击 Base64注入代码分析 Base64注入攻击 Base64攻击的测试地址:http://127.0.0.1/sqli/base64.php?id=MQ%3d%3d. 从URL中可以看出,ID参数经过Base64编码(%3d是=的URL编码格式),解码后发现ID为1,尝试加上一个单引号并一起转换成Base64编码,如图59所示. 图59 对1'进行Base64编码 当访问id=1'编码后的网址时(http://127.0.0.1/sqli/base64.php?id=
-
Web网络安全分析时间注入攻击原理
目录 SQL注入进阶 1.时间注入攻击 2.时间注入代码分析 SQL注入进阶 1.时间注入攻击 时间注入攻击的测试地址:http://127.0.0.1/sqli/time.php?id=1. 访问该网站时,页面返回yes,在网址的后面加上一个单引号,再次访问,页面返回no.这个结果与Boolean注入非常相似,这里介绍另一种注入方法--时间盲注.它与Boolean注入的不同之处在于,时间注入是利用sleep()或benchmark()等函数让MySQL的执行时间变长.时间盲注多与IF(expr
-
Web网络安全分析存储型XSS攻击漏洞原理
目录 存储型XSS攻击 存储型XSS代码分析 存储型XSS攻击 存储型XSS页面实现的功能是:获取用户输入的留言信息.标题和内容,然后将标题和内容插入到数据库中,并将数据库的留言信息输出到页面上,如图71所示. 图71 输入留言信息 当用户在标题处写入1,内容处写入2时,数据库中的数据如图72所示. 图72 保存留言信息到数据库 当输入标题为<img src=X οnerrοr="alert(/xss/)"/>.然后将标题输出到页面时,页面执行了<img src=X
-
Web网络安全漏洞分析SQL注入原理详解
目录 一.SQL注入的基础 1.1 介绍SQL注入 1.2 注入的原理 1.3 与MySQL注入相关的知识 MySQL查询语句 limit的用法 需要记住的几个函数 注释符 内联注释 一.SQL注入的基础 1.1 介绍SQL注入 SQL注入就是指Web应用程序对用户输入数据的合法性没有判断,前端传入后端的参数是攻击者可控的,并且参数带入数据库查询,攻击者可以通过构造不同的SQL语句来实现对数据库的任意操作. 下面以PHP语句为例. $query = "SELECT * FROM users WH
-
Web网络安全分析堆叠查询注入攻击原理
目录 1.堆叠查询注入攻击 2.堆叠准入代码分析 1.堆叠查询注入攻击 堆叠查询注入攻击的测试地址:http://127.0.0.1/sqli/duidie.php?id=1. 堆叠查询可以执行多条语句,多语句之间以分好隔开.堆叠查询注入就是利用这个特点,在第二个SQL语句中构造自己要执行的语句.首先访问id=1',页面返回MySQL错误,在访问id=1'--+,页面返回正常的结果.这里可以使用Boolean注入.时间注入,也可以使用另一种注入方式--堆叠注入. 堆叠注入的语句为: ';sele
随机推荐
- MySQL无法启动的解决办法
- PowerShell实现简单的grep功能
- vue.js指令v-model使用方法
- 用VBScript制作QQ自动登录的脚本代码
- 详解Servlet之过滤器(Filter)
- 在springboot中对kafka进行读写的示例代码
- Java IO 之文件读写简单实例
- 用javascript来控制 链接的target 属性的代码
- ASP.NET Core静态文件使用教程(9)
- PHP设计模式之迭代器模式的深入解析
- php获得用户ip地址的比较不错的方法
- JAVASCRIPT下判断IE与FF的比较简单的方式
- Android studio实现刮刮乐的方法
- js中function()使用方法
- XML简易教程之一
- 完美解决Get和Post请求中文乱码的问题
- 探讨:web上存漏洞及原理分析、防范方法
- js的闭包的一个示例说明
- 基于Vue2的独立构建与运行时构建的差别(详解)
- JS关于刷新页面的相关总结