[rctf](web)rcdn 解题分析,知识点总结

时间:2024-05-22 22:37:14
比赛平台关闭了,没有截图,见谅。
解题思路流程:
分析网站结构,看源码,元素审计。发现以下信息。
  1. 要得到flag要获得一个pro cdn
  2. pro 子域名长度为3到6个字符
  3. 存在一个提交ticke页面
那怎么获取一个pro cdn呢?想到以下几种方法。
  1. 直接申请一个pro cdn
  2. 能不能把一个basic提升为pro
  3. 登录admin的账号,看里面是否有pro cdn
无从申请。
设计pro的操作时都提示不允许。
尝试注入,弱密码无效。
这些弄完了之后,思路卡壳,回到提交ticket那里。
十分肯定最后flag是ticket这里出来。
有长度在ticket页面尝试了一波爆破,可是无效,最多同时6个open。用子域名爆破工具还有google hack 都没能得到有用的。
这题自己做到这里,实现想不出来还有什么了。看writeup发现是知识盲区,学习一波。
知识点主要来自乌云的这篇文章:
参考writeup:
看完文章后在回到题目。最后正确的解题流程是:
  1. 不断申请basic,会生成随机的八个长度的子域名。申请的这些子域名会存在服务器后台的数据库里面。
  2. 对子域名的字符进行判断,看是否包含有那些unicode,两组以上,包含一组长度为7,两组为6。不包含则删除basic。这里要一个脚本爆破。

    dz : 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 : fi //valid domain ext
    ſt : st //valid domain ext
    st : st //valid domain ext

  1. 如果发现有包含,则在ticket页面进行提交。提交的时候,比如:
假设申请的basic子域名为 23fdanapw ,这个子域名里面包含pw ,na,提交的时候我们提交 23fd㎁㎺ 。 后台会进行两步判断。
一是判断是否在数据库,这两个在后台数据库是等价的,存在。
二是后台会模拟点击这个链接,用浏览器去判断,而浏览器对这个子域名的长度判断是6位,达到了pro长度的标准。就认为是pro,返回flag.
总结:
unicode的长度编码trick。
多看多搜乌云。