SECCON 2014 CTF Write-up

前言

這是我第一次開始解國外的 CTF,兩天時間內只接了部分 100 分的題目,不過同時也是 HITCON Girls 的活動時間,能解的時間也不多,以下是我有解出的題目:

  • Easy Cipher (Crypto)
  • Shuffle (binary)
  • Get the key.txt (Forensics)
  • Choose the number (Programming)
  • Get the key (Network)

Easy Cipher

  • 題目:解讀下列訊息

    87 101 108 1100011 0157 6d 0145 040 116 0157 100000 0164 104 1100101 32 0123 69 67 0103 1001111 1001110 040 062 060 49 064 100000 0157 110 6c 0151 1101110 101 040 0103 1010100 70 101110 0124 1101000 101 100000 1010011 1000101 67 0103 4f 4e 100000 105 1110011 040 116 1101000 0145 040 1100010 0151 103 103 0145 1110011 0164 100000 1101000 0141 99 6b 1100101 0162 32 0143 111 1101110 1110100 101 0163 0164 040 0151 0156 040 74 0141 1110000 1100001 0156 056 4f 0157 0160 115 44 040 0171 1101111 117 100000 1110111 0141 0156 1110100 32 0164 6f 32 6b 1101110 1101111 1110111 100000 0164 1101000 0145 040 0146 6c 97 1100111 2c 100000 0144 111 110 100111 116 100000 1111001 6f 117 63 0110 1100101 0162 0145 100000 1111001 111 117 100000 97 114 0145 46 1010011 0105 0103 67 79 1001110 123 87 110011 110001 67 110000 1001101 32 55 060 100000 110111 0110 110011 32 53 51 0103 0103 060 0116 040 5a 0117 73 0101 7d 1001000 0141 1110110 1100101 100000 102 0165 0156 33 
    
  • 想法及過程:

    • 很明顯的這段文字是由四種不同進位的數字所組成,必須判斷出他是屬於哪個進位在轉換成 ASCII code 印出,不過起初在解的時候沒有發現有特別的規則,導致剛開始一直判別不出來,仔細觀察過後可發現每個進位的數字有不同的特徵:
      • 2 進位:字串長度 >= 6
      • 8 進位:開頭一定是 0
      • 16 進位:必有英文字
      • 10 進位:上述之外的
  • 解法:

    • 利用上述的特徵及 python script 即可解出訊息
    • crypt.py
  • 結果:

    Welcome to the SECCON 2014 online CTF.The SECCON is the biggest hacker contest in Japan.Oops, you want to know the flag, don't you?Here you are.SECCON{W31C0M 70 7H3 53CC0N ZOIA}Have fun!
    

Shuffle

  • 題目:

    • find the string before randomizing.
    • Shuffle
  • 想法及過程:

    • 已 binary 類型的題目來說,這題已經算是相對簡單的,題目意思大概是,這個 binary 檔會將 flag 不斷做 random 你必須找到在 random 之前的 flag 找出來,只要在 gdb 中,random() 之前下好 breakpoint,將 stack 中的字串 dump 出來就好。
  • 解法:

    • gdb ./shuffle
    • disas main
    • b *(address of call random)
    • r
    • x/15s $esp
    • then you can see the flag
  • Answer :
    SECCON{Welcome to the SECCON 2014 CTF!}

Get the key.txt

  • 題目:
  • 想法及過程:

    • 題目就只有單單給一個壓縮檔,其他什麼東西都沒有,於是就直接解壓縮看看,並可發現到裡面不知道是什麼檔案類型的檔案,直接使用 file 指令去看他,卻意外發現到他是 Linux rev 1.0 ext2 filesystem data ,直接 mount 上去之後,可發現到裡面內含許多檔名為數字的檔案,針對裡面其中幾個檔案來看,利用 strings 指令可看到裡面為 keyxx.txt 的檔案,不過題目既然叫做 get the key.txt 想必是要我們去尋找裡面為 key.txt 那個檔案,就可以找出這題的 flag
  • 解法

    • unzip forensic100.zip
    • file forensic100

      forensic100: Linux rev 1.0 ext2 filesystem data (mounted or unclean), UUID=0b92a753-7ec9-4b20-8c0b-79c1fa140869
      
    • mount -o loop forensic100 /mnt/

    • cd /mnt/

    • for file in * ; do echo $file && strings $file; done;

    • 可發現到 1 這個檔案內有 key.txt

    • 解壓縮就可獲得結果

  • Answer

    • SECCON{@]NL7n+-s75FrET]vU=7Z}

Choose the number

  • 題目:
    • nc number.quals.seccon.jp 31337
    • 連上去之後,會給你幾個數字叫你判斷最大值和最小值,大概要解二三十次左右,數字也會越來越大
  • 想法和過程:
    • 非常直覺,要我們寫程式去判斷並回傳
  • 解法:

Get the key

  • 題目:
  • 想法及過程:
    • 分析封包,可看見該 source 要連去某個網頁,但連上去卻都需要輸入密碼,而在看其他封包後,有不少都是 401 ,但仔細一看可以看見有個封包是要 GET /nw100/ 卻是 200 OK 的,仔細比對一下可以發現到 http header 中有多了 :
      • Authorization : Basic c2VjY29uMjAxNDpZb3VyQmF0dGxlRmllbGQ=
    • 只要再送出時將這段加入 header 中,就可 Capture The Flag 了
  • 解法 :
  • Answer :
    • SECCON{Basic_NW_Challenge_Done!}
comments powered by Disqus