我在使用externalHTML时遇到问题。
该方法替换单引号。
我正在开发一个用于测试有效载荷注入的应用程序。
<!-- Injection Points: -->
<div id="iPoint1" class="{{payload}}"></div>
<!-- Exploit:
"><svg/onload=alert()>
-->
<div id="iPoint2" wtf='lol' class='{{payload}}'></div>
<!-- Exploit:
'><svg/onload=alert()>
-->
当我呼叫externalHTML时:
alert(document.querySelector("#iPoint1").outerHTML);
alert(document.querySelector("#iPoint2").outerHTML);
显示的输出具有双引号包围的属性。
文字必须为:
<div id="iPoint2" wtf='lol' class='{{payload}}'></div>
但是它是:
<div id="iPoint2" wtf="lol" class="{{payload}}"></div>
然后是有效载荷
'><svg/onload=alert()>
显然不起作用。
我知道我可以使用手动替换它们
code.replace("\"", "'");
但是我认为这不是一个好的解决方案,因为注入点可能非常复杂且格式不正确。
实际上,我正在将每个有效负载写入iframe中,以覆盖警报并在不影响全局范围的情况下获得执行通知,