Background

一道Real world题目感觉蛮有趣的,所以记录下几个点

从"头"开始收集信息

1.png
首先可以看到得到两个消息 google chrome浏览器 flag在cookie里,这就是明示用xss来获取
然后注意我这里提到从头开始 这个头也是http头的意思
我们抓一下http头
123.png
hcorme.js
打开发现核心代码

function owo({success, message, data}) {
  if (success) {
    Object.keys(data).forEach(x => document[x] = data[x])
  }
}

接受一个参数渲染成document的属性
然后我们访问下一个链接
12.png
这是jsonp的作用 返回一个函数的参数
所以说我们如果可以控制一个callback是可以随便插入标签的

Bypass Chrom Auditor

我先直接插入一个恶意payload
12333.png
发现被chrome的auditor给拦截到了,这就是题目给的信息了,怎么bypass Chrome Auditor
经过google发现可以通过修改编码utf-16 或者utf-32绕过
12.png
but 我们并没有弹出alert(1)
发现,原来存在csp
1.png
我们成功bypass chrome auditor,现在的目标是bypass csp

利用callback Bypass CSP

我以前文章提到过这个点 在googlectf里面也出现过可以用callback的方式,我们构造payload
45E09DCE-BDA0-4000-8958-45E2A7654F66.png
执行之后相当于做了两个请求
第一个请求是引入callback
第二个请求相当于本站请求返回1
那我们试试可不可以callback引入alert
因为执行之后会有这些其他的东西 我用%0a和//注释掉
1.png
可以发现成功弹窗
11.png

小结

知识点主要有以下几个
xss-auditor --utf编码绕过
callback ->一段字符串-><script>字符串</script>