RCTF 2017 web writeup - Blog of Mathias
Blog of Mathias Web Securtiy&Deep Learning
RCTF 2017 web writeup
发表于: | 分类: web安全 | 评论:0 | 阅读:960

强撸两道半,noxss栽在了自己的单线程脑回路上。
总的来说,蓝猫师父出题是很有诚意的。

=================================================================

rBlog

最简单的一道web
但是最后也只有11个解出,可能是因为有一点脑洞吧
在源码审计中其实发现了一个SSTI,并不是完全没洞,但是因为是后台利用所以也比较鸡肋
根据提示,发现了view里的feed,生成了一个rss订阅页
但是删除文章后,这个rss也是会改变的
所以这就需要用到自带缓存功能的阅读器了
我使用了feedly,获得了flag

xx0.png

rCDN

比较符合正常思路/但是最后的验证方式有点不合理,单纯作为题目可以理解
最后是2个解出(手贱用小号交了二血)
登录注册后得到hint no xss或者sqli
那么来看业务逻辑
/base/new 可以添加一个基础的混合8位字母数字域名
而/pro 则允许你添加一个自定义的域名
但是所有pro相关的功能都是不允许的,毕竟普通用户
那么这时候看到了ticket功能
尝试提交一个普通域名,直接提示 免费账户无权进行这个操作
那么应该就是要提交pro域名(6位以下)
但是过一段时间后提示closed,因为域名不存在
一开始的思路是不是跑一下子域名呢
dns域传送利用失败,想想也不可能嘛
于是上一波subDomainbrute

x.png

是爆出来了东西,但是提交后,没卵用,仍然提示不存在
后来感觉这个校验应该仍然是在数据库里做的

所以问题就变成了:
域名<=6位 且 在数据库里
这时候只能想到浏览器里的unicode字符判断问题了

x3.png

比如这样的mm数学符号,虽然长度为1,直接访问的话是等效于两个m的
那么这思路其实也是最早mramydnei,m锅发的

x5.png

通过这个方法拿到了flag
但是说实话,这个验证比较不合理,从实际出发来说,后台客服不大可能用浏览器去验证

noxss

用非预期方法做出了csp-bypass xss
大概思路是unpkg里的url处于csp允许范围内
因此找到一个可控点引发xss就可以了
然而还是栽在了自己的单线程脑回路上
以为phpinfo页只是给个版本提示罢了,其实它是用来泄露http only的cookies的
正解的思路来自这篇文章
http://blog.innerht.ml/cross-origin-css-attacks-revisited-feat-utf-16/
利用css对标识符的宽泛编码限制来进行了跨域css加载和信息泄露
但是这个漏洞在新版webkit浏览器中,对跨域的css做出了,如果mimetype不对则不予加载的限制
本题则是利用了phpinfo.php来实现了同域css的加载与攻击

还不快抢沙发

添加新评论