开启第四关
查看源代码
这里我们看到,我们传入进去的值又经过了两个函数的参与。
函数说明:
Str_replace(“>”,””,$str),此函数将变量str中的字符>转换为空,转换时区分大小写。同理将<装换为空,然后在经过htmlspecialchars()函数,将一些预定义符号转换为html实体。
通过这几个函数的过滤转化,我们前三关的payload肯定对不能用的。所以接下来我们需要做的就是,在没有符号“<>”的情况下,并且语句不被htmlspecialchars()函数影响的情况下构建payload。
所以我们在这里可以构造一个输入到文本框后出现相应的事件。我们的payload:
“ οnfοcus=alert(1) autofocus=”
这样我们输入的payload没有被函数过滤,并且经过htmldpecailchars()函数转换并不影响最 input文本框。所以输入后文本框内容就变成了:
<input name=keyword value=””οnfοcus=alert(1) autofocus=””>
Onfocus事件:定义的事件将在对象获得焦点时触发,这里指input标签获得焦点。
Autofocus属性:input标签的属性,当页面加载input标签,自动获得焦点。
焦点:这里指你的光标的位置,也就是说当你的光标出现在input文本框这里,将进行onfocus事件的发生。
我们的结果:
方法不唯一,欢迎加入你的体会。
总结:每段代码有它的安全机制,同样也有它的局限性,这关的代码虽然感觉写的很不错,但是,往往还是能被利用并绕过。你使用了过滤符号的机制,而我可以绕过你的过滤***你。这里过滤<>符号,***的时候就不使用带有这样符号的paylod就可以
请开启<第五关>
转载于:https://blog.51cto.com/12332766/2116683