当前位置: 首页 > news >正文

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.内联注释绕过注入

参考

相关文章:

  • 深入探究 InnoDB 的写失效问题
  • 《操作系统真象还原》第十三章——编写硬盘驱动程序
  • JSON 在 Java 中的应用:手动生成与使用库的对比
  • IBM BAW(原BPM升级版)使用教程第八讲
  • 2025年数维杯赛题C题专家 组委会C题专家疑集锦
  • TCP的连接管理
  • C语言_函数hook方案
  • Cesium高度参考系统
  • lnx 0-1 积分
  • 北斗导航 | 北斗RTK定位厄待解决的问题,未来发展
  • 不同句子切割(文本分段 / chunking)工具或库 各自采用的策略和目标对比和分析
  • 系统分析与设计期末复习
  • OSPF案例
  • 小黑独自一人享受思考心流:79. 单词搜索
  • JavaScript基础-switch分支流程控制
  • Qt中的RCC
  • 滚珠丝杆在工作中损耗会影响什么?
  • python笔记和练习----少儿编程课程【阶段二(二)】
  • spark-哈希join介绍
  • vmware环境ORACLE RAC环境数据库节点1无法启动问题分析处理
  • 电影路演,虚幻狂欢?
  • 《瞭望》周刊社原总编辑、党委书记姬斌逝世,享年67岁
  • 兵韬志略|美2026国防预算未达1万亿,但仍寻求“暗度陈仓”
  • 视频丨雄姿英发!中国仪仗队步入莫斯科红场
  • 马上评丨维护学术诚信别陷入“唯AI检测”误区
  • 中日有关部门就日本水产品输华问进行第三次谈判,外交部回应