标签 h4x0rs.club 下的文章

0CTF 2018 h4x0rs.club2 writeup

0x01 前言

这道题硬刚了一晚上都没刚出来,赛后发现题目还没关,心血来潮试着做了一下,找到了xss点,可惜xss bot已经关了就没有验证到,在这里分享一下解题思路。

0x02 解题

全站有两处XSS,都有CSP限制

//首页反射型XSS  https://h4x0rs.club/game/?msg=aaaa
Content-Security-Policy: script-src 'nonce-d545899643f50aae21eb6baee87758b6' 'strict-dynamic';

//个人资料存储型XSS   https://h4x0rs.club/game/user.php/0xwfox
Content-Security-Policy: default-src 'none'; img-src * data: ; script-src 'nonce-12b24046f6b695704236666876698ce5'; style-src 'self' 'unsafe-inline' fonts.googleapis.com; font-src 'self' fonts.gstatic.com; frame-src https://www.google.com/recaptcha/;

首先分析下CSP限制的内容,寻找下可以利用的点。两处都有nonce值进行限制,没法通过静态写入HTML的方式执行JS脚本。由于个人资料的CSP规则太多,iframe框架也限制https://www.google.com/recaptcha/,根据hint提示构造跳转到CSP限制少点的首页XSS。

首页的CSP中只有script-src限制,其中的strict-dynamic就是我们要利用的地方

"strict-dynamic"允许js动态添加的脚本执行,而忽略script-src的白名单。并且,其他的script-src白名单会被忽略,浏览器不会执行静态或解析器插入的脚本,除非它伴随有效的nonce值。

所以我们只能通过首页的DOM XSS插入js脚本,才能够成功插入js。分析游戏首页的代码,从中寻找利用点,两个注释附近的地方比较可疑

Continue Reading...