Level-06:大小写绕过
(0)

同样也是放 XSS 代码先上:<script>alert("hello")</script>

可以通过网页源码所见猜测第一处使用了 htmlspecialchars() 函数,第二处使用了 str_replace() 函数将 <scirpt 替换成了 <scr_ipt ,因为不可能跟第五关一样,那样就没有意义了,所以这里猜测把 href 也做了一些规则,我们再看看有没有使用 strtolower() 函数,一一验证下:
<a href=111>

可以看到确实对 href 做了一些规则,也加了个 _

<sCRipt>alert("hello")</script>

没有对大小写做严格限制,那就可以结合 href 和 大写进行大小写绕过:
"> <a HrEf=javascript:alert(/xss/)>点我点我</a>//

成功~学习一波源码:
可以看到主要就是使用了 str_replace() 函数和 htmlspecialchars() 函数,前面几关介绍到,这里就不多介绍了

我们再看看源码中都过滤了什么,除了过滤了 script 和 on ,还过滤了 src 和 href,这里我们是首次见到 src,关于 href 的力量我们在第五关的时候已经见识过了,src 一般是配合 onerror 事件来使用的,具体的 payload 为:
<img src=x onerror="alert(/xss/)"
初次之外,还把 data 也加了规则,这是为什么呢?
通过 base64 编码可以将 <script>alert("xss")</script> 编码为:PHNjcmlwdD5hbGVydCgieHNzIik8L3NjcmlwdD4=
我们可以借助 data 和 base64 来起到跟 <script>alert("xss")</script> 一样的作用:
data:text/html;base64,PHNjcmlwdD5hbGVydCgieHNzIik8L3NjcmlwdD4=

本文为作者HD_More发布,未经允许禁止转载!
上一篇 下一篇
评论
暂无评论 >_<
加入评论