比赛平台关闭了,没有截图,见谅。
解题思路流程:
分析网站结构,看源码,元素审计。发现以下信息。
- 要得到flag要获得一个pro cdn
- pro 子域名长度为3到6个字符
- 存在一个提交ticke页面
那怎么获取一个pro cdn呢?想到以下几种方法。
- 直接申请一个pro cdn
- 能不能把一个basic提升为pro
- 登录admin的账号,看里面是否有pro cdn
无从申请。
设计pro的操作时都提示不允许。
尝试注入,弱密码无效。
这些弄完了之后,思路卡壳,回到提交ticket那里。
十分肯定最后flag是ticket这里出来。
有长度在ticket页面尝试了一波爆破,可是无效,最多同时6个open。用子域名爆破工具还有google hack 都没能得到有用的。
这题自己做到这里,实现想不出来还有什么了。看writeup发现是知识盲区,学习一波。
知识点主要来自乌云的这篇文章:
http://www.cnblogs.com/deen-/p/6919326.html
参考writeup:
http://lorexxar.cn/2017/05/23/rctf2017/
http://www.math1as.com/index.php/archives/479/?utm_source=tuicool&utm_medium=referral
看完文章后在回到题目。最后正确的解题流程是:
- 不断申请basic,会生成随机的八个长度的子域名。申请的这些子域名会存在服务器后台的数据库里面。
- 对子域名的字符进行判断,看是否包含有那些unicode,两组以上,包含一组长度为7,两组为6。不包含则删除basic。这里要一个脚本爆破。
? : dz //valid domain ext
? : rs //valid domain ext
№ : no //valid domain ext
? : sm //valid domain ext
℡ : tel //valid domain ext
? : tm //valid domain ext
? : na // valid domain ext
U+3377 : dm //valid domain ext
? : ma // valid domain ext
? : nf //valid domain ext
? : ml //valid domain ext
? : fm //valid domain ext
㎝ : cm //valid domain ext
? : ps //valid domain ext
? : ms //valid domain ext
? : pw //valid domain ext
? : mw //valid domain ext
㏄ : cc //valid domain ext
? : cd //valid domain ext
? : gy //valid domain ext
? : in //valid domain ext
? : ph //valid domain ext
? : pr //valid domain ext
? : sr //valid domain ext
? : fi //valid domain ext
? : st //valid domain ext
? : st //valid domain ext
- 如果发现有包含,则在ticket页面进行提交。提交的时候,比如:
假设申请的basic子域名为 23fdanapw ,这个子域名里面包含pw ,na,提交的时候我们提交 23fd?? 。 后台会进行两步判断。
一是判断是否在数据库,这两个在后台数据库是等价的,存在。
二是后台会模拟点击这个链接,用浏览器去判断,而浏览器对这个子域名的长度判断是6位,达到了pro长度的标准。就认为是pro,返回flag.
总结:
unicode的长度编码trick。
多看多搜乌云。
时间: 2024-10-23 15:21:51