ホームページ > バックエンド開発 > PHPチュートリアル > CTF プラットフォームのハッキングに関する質問の分析と回答

CTF プラットフォームのハッキングに関する質問の分析と回答

WBOY
リリース: 2016-06-23 13:05:19
オリジナル
1891 人が閲覧しました

インターネットでたくさんのCTF練習プラットフォームをよく見ましたが、CTFコンテストに参加した学生がこのCTFプラットフォームを勧めていました。当時ネットで調べてみると、このプラットフォームを推奨している人がまだたくさんいることがわかりました。このプラットフォームはホワイトハット個人によって開発されたプラットフォームです。このプラットフォームはまだ閉鎖されていませんが、時間を見つけてはCTF競技のプレイ感覚を知るために練習し、同時に突破力を向上させます。すべての大変な作業を終えた後、インターネット上でこの演習プラットフォームについて記事を書いた人が誰もいないことがわかり、質問を行うプロセスを記録することにしました。問題を解くのが難しい生徒を助けるためであると同時に、自分の成長過程を記録するためでもあります。

最初のレベル

最初のレベルは、質問の指示に従ってページ上に隠されています。 CTF コンテストの質問を行う場合、最初のステップは Web ページのソース コードを確認することです。ソース コードを見ることでキーを見つけることができます。

第 2 レベル

第 2 レベルのヒントは次のとおりです:

情報を隠すことができるのは Web ページのソース コードだけではない場合があります。

ソース コードを確認することに加えて、多くの場合、質問とサブサーバーの間で送信されるネットワーク リクエスト パケットも確認​​する必要があります。この質問では、キーは Web ページの応答パケットに隠されています。

キー: SDUH@HEADER

この質問には、HTTP プロトコルの基本的な理解と理解が必要です。 HTTP リクエスト メッセージとレスポンス メッセージの形式、各フィールドの意味、どのフィールドが必須であるかなどを理解します。

PHP を使用してヘッダーを設定するのも非常に簡単です

header("Key:SDUH@HEADER");
ログイン後にコピー

第 3 レベル

第 3 レベルのプロンプトは次のとおりです:

そのとおりですが、情報を非表示にする場所がまだあります

この質問 すべてのホワイトハットがよく知っているツールである burpsuite を使用する必要があります。

上の図からわかるように、Cookie の give_me_key の値は no なので、yes に変更して転送します。ページ上でキーを確認できます。

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

この質問もリクエスト パケットを確認する必要があります。違いは、この質問は Cookie を確認する必要があることです。同時に、この質問は、ブラウザとサーバー間の通信プロセス中に、burosuite、fiddle、Firefox プラグイン Tamper Data などのさまざまな傍受ツールを使用して変更を加えられる可能性があることも示しています。

第 4 レベル

Web ページのソースコードは第 4 レベルで与えられます。

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): パターンの規則に従って文字列 string を解析し、解析が成功した場合は True を返し、それ以外の場合は FALSE を返します。

strpos(str1, str2): 内の str2 の位置を検索します。 str1、見つかった場合は True、それ以外の場合は FALSE を返します

コードから、この質問には getkey の入力が必要であることがわかりますが、値は最初に数値である必要があり、次に値には文字列 Givemeky が含まれている必要があります。この質問では、ereg() 関数の %00 文字列切り捨ての脆弱性を使用する必要があります。具体的には、ereg が文字列 string を読み取るときに、%00 に遭遇すると、次の文字列は解析されません。次に、入力する文字列は getkey=1%00givemekey です。このようにして、検証をバイパスしてキーを取得できます。 Flag: m4g1c@ppp

レベル 5

レベル 5 で画像が表示されます。

このような問題に遭遇した場合、それは通常、情報隠蔽です。写真に隠された情報を確認する必要があります。 UltraEdit を使用して画像を開いたところ、画像の後ろに文章があることがわかりました。英雄の名前 666 を追加します。キーは LeBlanc6666 です

レベル 6

このレベルは圧縮パッケージです。ヒントは次のとおりです:

圧縮パスワードは非常に短くてシンプルで、数秒で破られる可能性がありますが、画像のどこにキーが隠されているか知っていますか?

この質問では、パスワードが非常に短いと述べました。rar パスワード ブラスト ソフトウェアを見つけて、解凍パスワードを 0oO として取得します。解凍後はこのような画像も得られます。前述したように、写真に関する質問は一般に情報の隠蔽に関する質問です。情報が画像内に隠されているか、他のファイルが画像内に含まれています。このトピックに関して、これまでの私の考えには限界がありました。 5 番目の質問にはすでに画像内の情報が含まれているため、この質問には画像内のファイルが含まれるはずだと思います。最後に、binwalkを使用して画像を分析したところ、ファイルが含まれていることがわかりましたが、キーが見つかりませんでした。著者に聞いてみると、この疑問の鍵は実はとてもシンプルで、写真のexif情報に隠されていることが分かりました。

著作権情報には、65 83 77 68 68 64 49 48 があります。変換された文字は、ASMDD@10 です。

レベル 7

7 番目の質問で与えられる質問の形式は次のとおりです:

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

プロンプトは次のとおりです:

鍵はヘッダーや Cookie ではなく、このページにあります。この PHP のソース コードの読み方を知っているなら、鍵はあなたのものです

这道题目就是一个典型的文件包含的题目,而且这道题目还需要读取文件的源代码。这篇 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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート