CTF平台hackit題目分析與解答

來源:互聯網
上載者:User
之前在網上經常看到很多的CTF的練習平台,在加上搞CTF比賽的學弟推薦了這個 CTF平台 。當時在網上看了一下,這個平台推薦的人還是很多的。這個平台是由一個白帽子個人開發的一個平台。趁著這個平台還沒有關閉的時候,我抓緊時間來練習一下,找找做CTF比賽的感覺,同時也提升我的滲透能力。當我千辛萬苦地做完了之後,發現網上還沒有人寫這個練習平台的writeup,於是我決定記錄下我的做題過程。一方面是為了能夠協助做題遇到困難的同學們,另一方面也是記錄我的成長過程。

第一關

第一關很簡單,根據題目的提示key藏在頁面中。做CTF比賽的題目,第一步就是要查看網頁的原始碼,查看原始碼就可以發現key。

第二關

第二關的提示是:

有時候網頁源碼並不是唯一可以隱藏資訊的。

除了看原始碼之後,很多時候還要看題目與分伺服器之間發送的網路請求包。這道題目中,key就藏在了網頁的響應包中。

Key:SDUH@HEADER

這道題目要求對HTTP協議有一個基本的瞭解和認識。知道HTTP的請求報文和響應報文的格式,以及每個欄位所代表的含義,哪些欄位是必須的等等知識。

使用PHP來設定header也是十分地簡單

header("Key:SDUH@HEADER");

第三關

第三關的提示是:

right,但還是有地方可以隱藏資訊

這道題目就需要使用到burpsuite這個白帽子都很熟悉的工具了。

從中可以看到,Cookie中的值為give_me_key的值為no,將其改為yes,然後轉寄。在頁面中就可以看到了key。

$('#key').val("0fC00k13@sc")

這個題目同樣是需要看請求包的,不同的是這個題目需要看的是cookie。同時這個題目還告訴我們,在瀏覽器和伺服器進行通訊的過程中,我們還可以使用各種攔截工具,如burosuite,fiddle,firefox外掛程式Tamper Data來進行修改。

第四關

第四關中給出了網頁的原始碼。

if (isset ($_GET['getkey'])) {    if (@ereg ("^[1-9]+$", $_GET['getkey']) === FALSE)        echo '必須輸入數字才行';    else if (strpos ($_GET['getkey'], 'givemekey') !== FALSE)           die('Flag: '.$flag);    else        echo 'getkey姿勢不對啊';}

這段代碼中有2個函數。

@ereg(string pattern, string string):以patttern的規則來解析字串string,如果解析成功返回True否則返回FALSE;

strpos(str1,str2):尋找str2在str1的位置,如果找到返回True否則FALSE;

從代碼中我們知道,這道題目要求輸入getkey,但是這個值首先必須要是數字,然後這個值又必須含有givemeky這個字串。這道題目需要用到 ereg()函數的%00字串截斷漏洞 。具體就是當ereg讀取字串string時,如果遇到了%00,後面的字串就不會被解析。那麼我們輸入的字串為: getkey=1%00givemekey 。這樣就可以繞過驗證,拿到key。 Flag: m4g1c@ppp

第五關

第五關給了一張圖片。

遇到這樣的題目,一般都是資訊隱藏。需要查看圖片中隱藏的資訊。我們使用UltraEdit開啟圖片,發現圖片後面有一句話。 Hero's Name Add 666 。key為 LeBlanc6666

第六關

這關給的是一個壓縮包。提示如下:

壓縮密碼很短也很簡單,秒秒鐘破,不過你知道key可以藏在圖片的哪裡嗎?

這個題目說了密碼很短,找一個rar的密碼爆破軟體,得到解壓密碼是0oO。解壓之後同樣得到的是一個這樣的圖片。之前已經說過了,遇到了圖片的題目一般都是資訊隱藏的題目。要麼是在圖片中隱藏了資訊,要麼是在圖片中包含了其他的檔案。在這個題目上,我之前的思路受到了限制。第五題中已經在圖片中包含了資訊,那麼我認為這題應該是在圖片了包含了檔案。最後我使用了 binwalk 來對圖片進行分析,發現其中確實是包含了檔案,但是始終找不出key。後來詢問作者才知道,這道題目的key其實很簡單,就隱藏在了圖片的exif資訊中。

在著作權資訊中,有 65 83 77 68 68 64 49 48 ,轉換為字母是 ASMDD@10 ,這個就是key。

第七關

第七題給出的題目的形式如下:

http://3.hackit.sinaapp.com/index.php?file=flag.php

提示是:

Key就在這個頁面,不是headers也不是cookie,如果你知道如何讀取這個php的源碼,key就是你的了

這道題目就是一個典型的檔案包含的題目,而且這道題目還需要讀取檔案的原始碼。這篇 php檔案包含漏洞 中的題目和本題的題目大致相同。那麼我們就使用使用下面的代碼來顯示頁面的原始碼。

http://3.hackit.sinaapp.com/index.php?file=php://filter/read=convert.base64-encode/resource=flag.php

網頁返回的原始碼base64編碼代碼如下:

PD9waHAKLy9LZXk6QTg5c2FkU0QKPz4KPGgzPktleeWwseWcqOi/meS4qumhtemdou+8jOS4jeaYr2hlYWRlcnPkuZ/kuI3mmK9jb29raWUs5aaC5p6c5L2g55+l6YGT5aaC5L2V6K+75Y+W6L+Z5LiqcGhw55qE5rqQ56CB77yMa2V55bCx5piv5L2g55qE5LqGPC9oMz4=

解碼之後得到key為 Key:A89sadSD

第八關

將檔案下載之後發現一個C#編寫的exe程式,那麼就是一個簡單的逆向的題目。使用C#編寫的程式,就可以直接使用 IISpy 來看原始碼。找出其中的關鍵代碼如下:

string text = string.Empty;for (int i = 0; i <= this.username.TextLength; i++){string arg_A5_0 = text;short num = (short)Encoding.ASCII.GetBytes(this.password.Text[i].ToString())[0];text = arg_A5_0 + num.ToString();}if (text.Equals("837450777811510050")){MessageBox.Show("right!the password is flag!");}else{MessageBox.Show("Error! Try Again");}

其中關鍵的就在於 (short)Encoding.ASCII.GetBytes(this.password.Text[i].ToString()) 。這段代碼就是去除password中的每一個字元,然後獲得字元的ACSII碼,看最後的ASCII碼為 837450777811510050 ,我們得到對應的password為SJ2MNsd2。這個就是key了。

最後,就進入了最後的 闖關成功頁面

當自己一路走來,最終到達了這個頁面的時候,我還是比較興奮的,就像是玩遊戲最後通關的感覺一樣。雖然總體說來這個上面的題目不是很難,其實比較適合剛剛入門CTF比賽的新手,我感覺這個平台上面的題目我也恰好比較適合,在這個平台上面我也學到了很多,尤其是圖片的隱寫技術。做完了這個平台上面之後,我後來做WHCTF(可以看這篇文章)上面的題目時遇到的圖片題目,我還是能夠動手的。一段旅途走完了之後,總會有新的收穫的。通過這個平台,我學習了很多,我也意識到我需要學習和瞭解的內容還有很多。路漫漫其修遠兮。

最後非常感覺作者提供了一個這樣好的平台,讓我這樣的菜鳥有一個好的練習的地方。最後附上作者的blog地址。 sco4x0’s blog

  • 相關關鍵詞:
    相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.