xss测试题的小总结


function escape(input) {
    // tags stripping mechanism from ExtJS library
    // Ext.util.Format.stripTags
    var stripTagsRE = /<\/?[^>]+>/gi;
    input = input.replace(stripTagsRE, '');

    return '<article>' + input + '</article>';
}        

一开始拿到这道题觉得很懵,因为自己对正则表达式那一块不太熟练,只能读懂函数的大概意思是:将input这个字符串替换为与正则表达式匹配的字符串,百度了好久无果,开始在下面的输入框测试

这里写图片描述
这样就会看到,只要加了script标签并且给它闭合后,无论输入什么内容,浏览器在解析的时候都会自动把article标签下的script标签过滤掉只显示中间的文本内容,大致就可以推测出上文中的那一段代码中看不懂的正则表达式的目的也就是把一些东西过滤掉,于是又进行了下面的测试
这里写图片描述
可以看到只要不把标签闭合掉,在article标签下浏览器可以正常解析,但是script标签是需要闭合并且还要加反斜杠闭合的,因此,可以换另一种方法尝试,由于浏览器在解析html的时候会自动把标签后面闭合,于是我选择那种单个标签不需要反斜杠闭合的,例如选择 img 这个标签,再次进行测试
这里写图片描述
这次选择用alert方式去测试是否存在xss,页面出现弹框,表示测试成功(注意:#和onerror中间要用空格隔开),下面只需要将脚本中的alert(1)换成prompt(1)就好了
这里写图片描述

可以看到实验西成功了,这只是一个小小的实验,但是需要我们及时的去变通,有的啥时候换个方法就可以柳暗花明。通过这个小小的实验也可以看出xss真的是跟前端紧密相连,自己在html、以及js还有很多不会的东西,需要赶紧查漏补缺了。

-

展开阅读全文

没有更多推荐了,返回首页