<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    專屬鏈接

    題目:

    現在,你拿到了滴滴平臺為你同學生成的專屬登錄鏈接,但是你能進一步拿到專屬他的秘密flag么 提示1:雖然原網站跟本次CTF沒有關系,原網站是www.xiaojukeji.com 注:題目采用springmvc+mybatis編寫,鏈接至其他域名的鏈接與本次CTF無關,請不要攻擊 http://116.85.48.102:5050/welcom/3fca5965sd7b7s4a71s88c7se658165a791e

    解答:

    首先打開網站,發現是滴滴的官網。。

    此時發現所有連接幾乎全部重定向到了滴滴官網。

    無奈下查看元素。發現hint

    <!--/flag/testflag/yourflag-->

    嘗試訪問,http://116.85.48.102:5050/flag/testflag/yourflag發現報錯500,好像是數組越界?

    此時嘗試將yourflag替換為DDCTF{1321},返回failed!!!。

    猜測爆破flag么?完全沒戲啊。看樣子應該有其他地方可以入手。

    然而又發現了主頁js的一句神奇的話。一個ajax語句。

    然并卵,404。。。。。

    此時只好繼續分析題目,發現了令人眼前一亮的東西。對,就是下面這個icon

    專屬鏈接

    http://116.85.48.102:5050/image/banner/ZmF2aWNvbi5pY28=

    訪問后,發現下載了favicon.ico

    此時發現圖標好像圖片很奇怪。后來果然驗證了這是個hint。

    此時可以愉快地玩耍了,這樣一來,題目源碼有了,還愁拿不下來么。

    美滋滋。此時也知道了題目中hint的用意。題目采用springmvc+mybatis編寫

    百度搜索springmvc+mybatis文件結構,美滋滋讀文件。

    首先,大概知道了資源文件都是在WEB-INF文件夾下,所以猜測這個icon也在這里,此時我們要先確定文件夾。

    WEB-INF下有一個web.xml,此時嘗試讀取,最終確定目錄../../WEB-INF/web.xml
    然后拖文件。這里說幾點注意事項。

    • 通過../../WEB-INF/web.xml確認位置。
    • 繼續根據web.xml中的內容進行文件讀取。classpath是WEB-INF/classes
    • 讀class文件時根據包名判斷文件目錄com.didichuxing.ctf.listener.InitListener 即為WEB-INF/com/didichuxing/ctf/listener/InitListener.class
    • 制造網站報錯,進一步找到更多的文件

    差不多,注意一上四點,就可以拿到盡量多的源碼了。

    拖到源碼后,就不美滋滋了。。。還好去年在DDCTF學過2017第二題的安卓逆向,會逆向了。

    (此時坑點:jd-jui僅可逆jar,需要將class打成壓縮包改為jar再逆向)

    此時開始苦逼的分析源碼。

    分析后發現,存在接口,用當前用戶的郵箱去生成一個flag。

    但是flag是加密的。此時加密流程代碼里都有,是一個RSA加密。密鑰在服務器中的

    此時又一次明白了,為什么讀文件允許ks文件。

    來吧,首先先拿郵箱申請一個flag

    然而此時申請flag,郵箱也得先加密。自己提取出來的加密腳本如下。

    public static String byte2hex(byte[] b)
      {
        StringBuilder hs = new StringBuilder();
        for (int n = 0; (b != null) && (n < b.length); n++)
        {
          String stmp = Integer.toHexString(b[n] & 0xFF);
          if (stmp.length() == 1) {
            hs.append('0');
          }
          hs.append(stmp);
        }
        return hs.toString().toUpperCase();
      }
      public static void getEmail() throws NoSuchAlgorithmException, InvalidKeyException{
          SecretKeySpec signingKey = new SecretKeySpec("sdl welcome you !".getBytes(), "HmacSHA256");
          Mac mac = Mac.getInstance("HmacSHA256");
          mac.init(signingKey);
          String email="3113936212117314317@didichuxing.com";
          byte[] e = mac.doFinal(String.valueOf(email.trim()).getBytes());
          System.out.println(byte2hex(e));
      }
    //0DFEE0968F44107479B6CF5784641060DB42952C197C7E8560C2B5F58925FAF4

    坑:但是此時后端僅允許post方式。且參數是以get傳遞的。

    成功獲取到flag

    Encrypted flag : 506920534F89FA62C1125AABE3462F49073AB9F5C2254895534600A9242B8F18D4E420419534118D8CF9C20D07825C4797AF1A169CA83F934EF508F617C300B04242BEEA14AA4BB0F4887494703F6F50E1873708A0FE4C87AC99153DD02EEF7F9906DE120F5895DA7AD134745E032F15D253F1E4DDD6E4BC67CD0CD2314BA32660AB873B3FF067D1F3FF219C21A8B5A67246D9AE5E9437DBDD4E7FAACBA748F58FC059F662D2554AB6377D581F03E4C85BBD8D67AC6626065E2C950B9E7FBE2AEA3071DC0904455375C66A2A3F8FF4691D0C4D76347083A1E596265080FEB30816C522C6BFEA41262240A71CDBA4C02DB4AFD46C7380E2A19B08231397D099FE

    然后,解密吧。。

    只能百度了,java又不熟,RSA更不熟,尤其還是這種hex的。逆源碼都失敗了。一個勁報錯。(查百度,好像是因為啥空格之類的。打不過打不過)

    最終發現一個好玩的,可以從keystore提取RSA私鑰。這樣一來,又繼續美滋滋。

    https://blog.csdn.net/zbuger/article/details/51690900

    然后照貓畫虎,提出私鑰。此時祭出自己的一個無敵大件。之前從某次CTF安卓題提出的RSA解密腳本。(當時題目簡單,加解密都給了,改個函數名就ok了。)

    (╯°□°)╯︵ ┻━┻

    要不是在線的解不了。才不會想起這個大招(已放到附件,記得將 密文to ascii 再 to base64。)。。。。。

    通過在線工具,提取出公私鑰,然后跑腳本。最終拿到flag。

    DDCTF{1797193649441981961}

    本文章首發在 網安wangan.com 網站上。

    上一篇 下一篇
    討論數量: 0
    只看當前版本


    暫無話題~
    亚洲 欧美 自拍 唯美 另类