刷题[CISCN2019 华北赛区 Day2 Web1]Hack World

解题思路

打开发现是很简单的页面,告诉了表名和列名,只需知道字段即可

尝试一下,输入1,2都有内容,后面无内容。输入1'让他报错,发现返回bool(false)

大概思路就是布尔型注入了,通过不断返回正确值,猜测对应字段

fuzz

通过fuzz发现,482长度的被禁了,472长度的可以使用,也就是说禁用了空格,union,or,and等

那就有点难办了,联合注入被禁,报错注入被禁

首先我们先不看过滤,应该选择的sql语句位为
select ascii(substr((select flag from flag),1,1)) ) >1 %23

由于空格被禁,我们使用括号或者tab替换空格
select(ascii(substr((select(flag)from(flag)),1,1)))>1%23

由于or被禁,并且不知道为什么单独使用||可以,但是与sql语句组合就不行了

爆破

这里网上有两种方法,异或和if

1.if

if(ascii(substr((select(flag)from(flag)),1,1))>1,1,2)

如果不会脚本的话,通过bp的intruder模块,同样可以爆破求出flag值,无非就是麻烦一点,ascii码转换成字符的形式,但其实和写脚本应该差不太多,

(平台应该是对访问做了限制,这里线程需要设置的低一些)

2.异或

通过0与任何异或结果就是他本身的思想

0^(ascii(substr((select(flag)from(flag)),1,1))>1)

脚本

网上有很多现成的脚本,这里就不再贴上来了,虽然自己写脚本能力差,但是希望能够学习到其他大佬的脚本,而不是贴到自己这,当一个脚本小子

总结思路

  • 常规的布尔盲注,根据回显爆破
  • 需要根据一些过滤,进行相应的更改

知识点

  • 布尔盲注

猜你喜欢

转载自www.cnblogs.com/karsa/p/13384606.html