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

SQL注入的基本防御与绕过(中高级篇)

SQL注入的基本防御与绕过(中高级篇)

  1. DVWA medium(中)级别SQL注入代码分析

    1. •mysql_real_escape_string()函数

      -将单引号【'】、双引号【"】、反斜杠【\】、空字符【null】等字符进行转义。

      •addslashes()函数

      -功能与mysql_real_escape_string()函数相近。

      •mysql_real_escape_string()只能用于MySQL数据库,而addslashes()函数则是通用的。

  2. 判断数字型和文本型注入

    1. •数字型注入与文本型的最大区别就是不需要考虑引号闭合。

      •可以采用简单的算术运算来判断是否是数字型注入。

      -比如输入2以及3-2(+号在浏览器url栏是空格的意思),发现两者显示的结果都是一样的,就基本可以断定参数是数字型。

  3. 绕过去单引号的限制(只是针对参数而非单引号本身)

    1. •编码绕过

      -将那些必须放在引号内的参数转换成十六进制ASCII码,MySQL能够自动识别出这些十六进制ASCII码所对应的字符。

      -可以采用专门的转换工具或者是Burpsuite中的Decoder模块(Decode as ASCII hex)进行编码。

      -推荐使用Python中bytes对象的hex()方法进行编码转换(记得转换后要加0x

      -image-20260427060702578

      -注意,只能对参数进行编码绕过,不适用于SQL语句。

  4. DVWA high级别SQL注入代码分析

    1. •is_numeric()函数

      -判断用户输入的数据是否是数字型

      image-20260427060924924
  5. DVWA登录页面的防注入处理

    1. image-20260427061021402
  6. 过滤敏感关键字

    1. •str_replace()函数

      -过滤指定的字符(如下图,将sql语句全部过滤)

      -可用于过滤payload中经常用到的关键字

      -image-20260427061147251

      •SQL注入的防御思路

      -在代码层面注意避免产生漏洞

      -配置WAF防火墙进行拦截

  7. 复写绕过(针对关键字过滤的方式)

    1. •复写绕过

      -在关键字中包含关键字,比如sselectelect,将其中的select过滤掉之后,剩下的字符正好又可以组成select。

      •CTF例题

      -BUUCTF--极客大挑战2019-BabySQL

    2. 利用Burpsuite测试过滤关键字:利用intruder模块结合字典文件测试过滤关键字

  8. 对过滤空格的绕过(用/**/和())

    1. 利用注释符/**/绕过空格过滤

      -在SQL语句中加入/**/,就等同于空格。

      -包含在//之间的代码将不起作用

      image-20260427064639971

    2. •利用()绕过空格过滤

      -一条SQL语句可以分为指令和参数两部分

      select username from users;

      select和from属于指令,username和users属于参数

      空格用来区分指令和参数,只要将参数用小括号括起来,也可以达到相同的效果

      image-20260427064730273

    3. BUUCTF--Web-[WUSTCTF2020]颜值成绩查询(/**/似乎有点问题)

http://www.jsqmd.com/news/707349/

相关文章:

  • 别再手写if-else了!Gin框架集成validator/v10的完整配置与避坑指南
  • 别再死记硬背了!用一张思维导图帮你彻底搞懂UDS诊断的NRC(否定响应码)
  • 2026有实力的俄罗斯海参崴旅游旅行社怎么选择厂家推荐榜,高端定制型/大众精品型/纯玩专线型/家庭亲子型厂家选择指南 - 海棠依旧大
  • 保姆级教程:在ArmSoM-W3 RK3588开发板上手把手配置CAN总线(Debian11系统)
  • 构建AI Agent共享工具箱:中心化脚本与行为准则实践
  • 2026年3月专利撰写系统怎么选,智能专利/专利改写校准/专利撰写服务/企业专利生成/专利改写降重,专利撰写网站口碑推荐 - 品牌推荐师
  • 【项目实训(个人)】7:完成AI相关的环境配置与AI角色对话功能
  • 从AI对话到结构化知识库:llm-wiki三层架构与静态站点实践
  • Nunchaku FLUX.1 CustomV3部署教程:Kubernetes集群中StatefulSet方式持久化运行
  • 深度神经网络梯度消失问题的可视化分析与解决方案
  • AI生成技术架构图:excalidraw-diagram-skill实现视觉验证与自动化设计
  • 2026成都杀白蚁公司推荐榜:成都专业的白蚁防治公司、成都别墅白蚁防治、成都发现白蚁怎么办、成都哪家白蚁防治公司可靠选择指南 - 优质品牌商家
  • StreamRAG:构建可对话视频知识库的多模态检索增强生成实践
  • 小米R4A千兆版刷OpenWRT保姆级避坑指南:从Python环境到Breed,一次搞定不翻车
  • 生成式AI在CPS仿真测试中的技术演进与应用
  • PHP AI开发框架LLPhant:无缝集成LLM与RAG,赋能智能应用构建
  • 基于OAuth设备流为AI助手集成飞书技能:原理、部署与实战
  • Fairphone 2主板改造可持续路由器开发套件解析
  • ARM CMN-600互连架构与寄存器配置详解
  • ACE-Step音乐生成模型:零基础5分钟创作多语言歌曲,小白也能当音乐人
  • AI-Compass:构建AI知识体系与工程实践的导航图
  • FormKit:AI优先的表单框架,节点树驱动开发新范式
  • Fast-BEV++:自动驾驶BEV感知的算法效率与部署优化
  • 从零开始:nli-MiniLM2-L6-H768在Windows系统下的本地部署指南
  • 别再为下载预训练模型头疼了!PatchCore工业异常检测复现保姆级避坑指南(附WideResNet50离线包)
  • 全国地级市POI兴趣点数据2012-2023年
  • 基于MCP协议构建AI驱动的安全研究自动化平台SecPipe
  • 告别手动点按!用LabVIEW自动化Microchip PM3烧录,附完整命令行调用代码
  • PyTorch模型部署实战:如何用load_state_dict优雅地加载预训练权重到自定义网络?
  • 从向量内积到前缀和:用C++ <numeric> 玩转数据科学中的基础运算