1. 程式人生 > >[rctf](web)rcdn 解題分析,知識點總結

[rctf](web)rcdn 解題分析,知識點總結

數據庫 方法 code dom arc 比賽 start 關閉 學習

比賽平臺關閉了,沒有截圖,見諒。 解題思路流程: 分析網站結構,看源碼,元素審計。發現以下信息。
  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發現是知識盲區,學習一波。 知識點主要來自烏雲的這篇文章: 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 看完文章後在回到題目。最後正確的解題流程是:

  1. 不斷申請basic,會生成隨機的八個長度的子域名。申請的這些子域名會存在服務器後臺的數據庫裏面。
  2. 對子域名的字符進行判斷,看是否包含有那些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

  1. 如果發現有包含,則在ticket頁面進行提交。提交的時候,比如:
假設申請的basic子域名為 23fdanapw ,這個子域名裏面包含pw ,na,提交的時候我們提交 23fd?? 。 後臺會進行兩步判斷。 一是判斷是否在數據庫,這兩個在後臺數據庫是等價的,存在。 二是後臺會模擬點擊這個鏈接,用瀏覽器去判斷,而瀏覽器對這個子域名的長度判斷是6位,達到了pro長度的標準。就認為是pro,返回flag. 總結: unicode的長度編碼trick。 多看多搜烏雲。

[rctf](web)rcdn 解題分析,知識點總結