web题中的一些过滤绕过

GET - 基于错误 - 过滤注释
 
首先看到GET方式,要习惯的打一个半角英文单引号。我们这里打一下试试 ?id=1'
 
这时候发现报错了(显示多了一个单引号,如上图), 但是要是按照我们之前使用联合查询获取额外信息,就要注释掉后面的『’ LIMIT 0,1』,但是这里的代码却过滤掉了注释。
所以我们先要闭合’limit的单引号 使用语句 ?id=1' or 1=1 or ' 发现已经可以正常显示用户名和密码了,但由于我们只是闭合了单引号而没有注释掉limit,所以还不能使用联合查询,此时考虑使用爆破注入,可构造语句为?id=1' or extractvalue(1,concat(0x7e,database())) or '  这个就是爆破语句,之后上传语句 就可以得到数据库名了
第二种:使用联合注入 构造语句:?id=1' order by 3;%00         (;%00可以当做注释符号,用来注释掉后面的' limit 0,1等等)
用上述语句来判断显示位,然后就可以使用联合查询注入了,例如:?id=-1' union select 1,2,3;%00 替换掉中间的order by换成其他的查询语句都是ok的
 
 
GET - 基于错误 - 过滤OR&AND - 单引号
 
这次还过滤了and和or,那我们就无法进行布尔判断了。此处可以使用替代的办法,即使用『&&』替代『and』,『||』替代『or』。此处还有个问题,就是preg_replace按照代码中的用法是无限次替换的,但实际中却可以使用『oorr』这样来绕过,这不科学。
 
 
GET - 基于错误 - 过滤OR&AND
 
这和上面的差不多,但是这次使用『oorr』这样的方式试一下。
 
 
GET - 基于错误 - 过滤空格和注释 - 单引号
 
看到这个名单有没有心寒的感觉?SQL语句中函数之间是要有空格的,如『and union』不能写成『andunion』,但是函数和变量中可以去掉空格,如『2 = 1』可以写成『2=1』。这个黑名单屏蔽了空白字符以及斜杠星号,意味着用『/**/』伪装成空格的日子一去不复返了。因为空格只是隔开前后函数,有没有其他的符号也能达到同样的效果 所以,可以使用+来代替空格来连接union与select      例如:union+select
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ra1nning

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值