sql注入漏洞的对抗

对于sql注入漏洞的防御方法,核心思想是转义。让输入的内容不会成为sql语句的语法的一部分,也就是说让输入的内容仅仅是sql语句的数据部分。这样的对抗方法有很多种,比如是宽字节注入[1],二次注入等。

宽字节带来的问题主要是吃ASCII码字符的现象!GBK编码第一个字节(高字节)的范围是0x81~0xFE

,第二个字节(低字节)的范围是0x40~0x7E0x80~0xFE, 而\字符的十六进制0x5C,正好是GBK的低字节,如果前面来一个高字节,那么正好凑成一个合法字符!比如815C是乗,DF5C是運,你可以用下面的python脚本,来输出任意16进制对应的GBK字符,实现宽字节注入。

复制代码
hex_str = '815C' # 这里是16进制编码的字符串
byte_str = bytes.fromhex(hex_str) # 将16进制编码转换为字节
gbk_str = byte_str.decode('gbk') # 将字节转换为GBK编码
print(gbk_str) # 打印GBK编码的字符串

二次注入的场景比较复杂,也能绕过单引号转义,实现sql注入。原理如下:大多数数据库,在存储数据前会对数据进行一次反转义,也就是将\'转成' ,而一些网站框架会将数据库的数据取出来,再拼接成sql语句进行查询,于是就发生了二次注入。

典型的sql注入,还有其他类型如下,任重而道远,继续努力~

1.Union注入

2.Boolean注入

3.报错注入

4.时间注入

5.堆叠注入

6.二次注入

7.宽字节注入

8.大小写绕过注入

9.编码绕过注入

10.内联注释绕过注入

参考

相关推荐
cellurw18 分钟前
Day39 SQLite数据库操作与HTML核心API及页面构建
数据库·sqlite·html
小蒜学长29 分钟前
旅行社旅游管理系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·旅游
Mr_hwt_12334 分钟前
基于mybatis-plus动态数据源实现mysql集群读写分离和从库负载均衡教程(详细案例)
数据库·spring boot·mysql·mybatis·mysql集群
万邦科技Lafite1 小时前
实战演练:通过API获取商品详情并展示
大数据·数据库·python·开放api接口
黄焖鸡能干四碗1 小时前
智慧教育,智慧校园,智慧安防学校建设解决方案(PPT+WORD)
java·大数据·开发语言·数据库·人工智能
敲上瘾1 小时前
Docker 存储卷(Volume)核心概念、类型与操作指南
linux·服务器·数据库·docker·容器·架构
DemonAvenger1 小时前
MySQL内存优化:缓冲池与查询缓存调优实战指南
数据库·mysql·性能优化
RationalDysaniaer1 小时前
了解etcd
数据库·etcd
正在走向自律2 小时前
国产时序数据库选型指南-从大数据视角看透的价值
大数据·数据库·清华大学·时序数据库·iotdb·国产数据库
Pocker_Spades_A2 小时前
Python快速入门专业版(十五):数据类型实战:用户信息录入程序(整合变量、输入与类型转换)
数据库·python