问题描述
以下代码可用于基于Dom的XSS注入。
<script>
function loadobj(){
var cc=eval('('+aMess+')');
document.getElementById('mess').textContent=cc.message;
}
if(window.location.hash.indexOf('message')==-1)
var aMess="({\"message\":\"Hello User!\"})";
else
var aMess=location.hash.substr(window.location.hash.indexOf('message=')+8);
</script>
URL http://www.domxss.com/domxss/01_Basics/04_eval.html。我正在努力了解如何控制aMess参数。
如果我使用http://www.domxss.com/domxss/01_Basics/04_eval.html?aMess=(在此处插入javascript)
例如,脚本不执行也不反映在页面响应中。有人可以指出我正确的方向吗?
解决方法
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
version="3.0"
exclude-result-prefixes="soapenv"
xmlns:old="random.com/system/i/Modify/1.0/"
xmlns:gcp="http://random.com/G/Modify"
xmlns:ogcph="http://random.com/2/MsgHeader/"
xmlns:hgcph="http://random.com/3/MsgHeader/"
xmlns:ogcpb="http://random.com/2/MsgBody/"
xmlns:hgcpb="http://random.com/3/MsgBody/">
<xsl:namespace-alias stylesheet-prefix="soapenv" result-prefix="#default"/>
<xsl:namespace-alias stylesheet-prefix="old" result-prefix="gcp"/>
<xsl:namespace-alias stylesheet-prefix="ogcph" result-prefix="hgcph"/>
<xsl:namespace-alias stylesheet-prefix="ogcpb" result-prefix="hgcpb"/>
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="*">
<gcp:Modifys>
<gcp:Modify>
<xsl:copy-of copy-namespaces="no" select="/*:Envelope/*:Body/*:Modifys/*:Modify/*"/>
</gcp:Modify>
</gcp:Modifys>
</xsl:template>
</xsl:stylesheet>
指向URL中location.hash
之后的位置。
因此,您将不得不使用#
来代替https://some/url#message=(insert javascript here)
。