sql注入——union联合注入
union的作用: 用于合并两个或多个查询语句的结果集,注意:union内部的查询语句必须查和外部相同数量的列。
order by的作用:用于根据指定的列对结果集进行排序
使用order by的目的:因为order by对没有的列进行排序时会报错,利用这个特性能够快速的确定这张表有多少个字段
展示查询到的所有的结果:group_concat()函数,弊端是前端做字符串长度限制的时候,如果合并后的数据长度超出,会导致显示不完全
推荐使用limit一个一个进行查看
注入步骤:
- 先用order by确定字段数
- 用union select 1,2,3 找到数据在屏幕上回显的位置
- 查库名(使用database()函数)
- 查表名
- 查列名
- 查列里面的需要的数据
清楚MySQL数据库的特点:
- information_schema.tables:记录表名信息的表 记录表名信息的字段叫"TABLE_NAME" 记录库名信息的字段叫"TABLE_SCHEMA"
- information_schema.columns:记录列名信息表 记录列名信息的字段叫"COLUMN_NAME"
常见的手动闭合方式:
\表示转义,直接输入\会将字段的闭合方式暴露出来,因为被转义不生效,导致SQL语句报错,并爆 出闭合方式。
注:'1\' LIMIT 0,1 ,发现\转义后有一个单引号,说明此sql语句基于单引号闭合。
我们再来看一个: http://192.168.31.120/sqli-labs/Less-3/?id=1\ 注:''1\') LIMIT 0,1' ,发现\转义后有一个单引号即括号,说明此sql语句基于单引号括号闭合。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下