开始前的例行叨叨:
这次记录的是20180ctf的web题,名字不重要了,我只记得那只页面上的皮卡丘。
到比赛结束没有做出来!!在坐等wp,以后会更新。
一、题目分析
(熟悉题目的大佬就跳过吧)
1、登录界面 /game/index.php
注册和登录界面都是这一个,账号名不能特殊符号,验证码复制上到Python里直接跑即可。
不登录,则不能进入主界面,不能看用户的profile简介,直接进入会被跳转:
https://h4x0rs.club/game/?msg=Login+required
此处有漏洞,之后会专门分析。
2、登录后的主界面 /game/index.php
【1】号位置是当前的难度
【2】号位置是退出登录按钮
【3】号位置进入 /game/profile.php 个人简介页面
【4】号位置加载积分榜
【5】号位置是开始游戏按钮
【6】号位置是跳转发twitter按钮
3、个人简介页面 /game/profile

这里可以设定简介是公开还是私有,这个页面可以写入xss,但不在当前页面查看,之后做分析。
4、个人简介查看页面 /game/user.php/xxx
个人简介必须是public才会被公开,在之前profile.php写入的test123在这个页面被显示了出来。
report按钮是向管理员提交URL,管理员自动访问后XSS管理员的cookie。
report会提示缺少验证码,这是由于人机验证用了谷歌api,在墙内无法获取,我用墙外VPS提交的URL。
提交成功则显示:
意思是我们会看的,但是注意我们不会在这个上面做任何交互。也就是不能指望自动点一些弹框之类的,必须点开url就能自动xss出cookie。
5、游戏页面 /game/index.php
点击了箭头开始游戏,一开始还不知道游戏怎么玩,后来发现是输入英文名,等几秒就自动提交了。
还发现个api能直接给自己升级,但最高升三级就无效了。
升级让自己上排行榜貌似并没有什么作用,只能让别人知道你的用户名,看看个人简介而已。
https://h4x0rs.club/game/login.php?action=upgrade&level=1
二、插入点分析
1、用户简介界面插入 /game/user.php/xxxx(用户名)
在/game/profile.php中,写自己的简介,发现完全无过滤,任何字符随便写,但就是执行不了。
因为响应包头做了CSP策略,CSP(Content-Security-Policy)在响应头中规定各种资源允许加载的白名单。