编码绕过问题

在bwapp上尝试xss注入时,在level3层次上,后台用了htmlspecialchars函数编码转义,没有办法绕过。网上搜索后,给出的结论是,函数对&,',",<,>进行了转义,其本身没法绕过,但是视它所处的环境来定。比方说,



hello

注意这个x变量,它首先是在script环境下,然后通过改变dom结构,又输出到了html环境中,所以它会先被js解码,然后又被html解码。如果我们构造一个js编码后的攻击payload,那么它不含&,',",<,>,所以可以绕过htmlspecialchars函数,当它解析之后,加入到html中之后,就又成为有攻击性的代码得以执行。

这个问题得以理解之后,我在看道哥的《白帽子讲web安全》一书中,看到了关于DOM型xss的内容,它不按攻击代码是否存储于服务器来划分,而是指通过改变DOM结构来达到攻击的这一类的xss。就上面的例子来说,script中的内容输出到html中,就正好形成了一次xss攻击。

这样就又引来了新的思考,第一,浏览器解析过程;第二,浏览器解码顺序。

浏览器解析过程

浏览器的解析过程,关于这个问题,可以参考how browsers work,它的译文How browsers work,觉得复杂的可以参考HTML页面加载和解析流程详细介绍。总结下来,就是从头开始加载,遇见

你可能感兴趣的:(编码绕过问题)