[NeoQuest2017] 6惑星または「多すぎる...」

戦いの後、彼らは拳を振らないという意見があります。 しかし、私の人生で最初のctf NeoQuest2017は、紙の情報セキュリティが実際のセキュリティとは大きく異なり、その場でフラグを立てることができないことを示しました。 結局のところ、私はしっかりと旗に忍び寄った。



だから:



「あまりにも多く...」

この惑星は熱帯地方に似ています...信じられないほどの量の多様な動植物! 私たちのバックパックはすべて、サンプル、および説明付きの観測ログで満たされ、結局、惑星の探索を始めました! 周りを見てみると、すべての情報をリモートですぐにログブックに入力する方がはるかに効率的であることがわかりました。 これはデータ転送が非常に遅いため、正しく優先順位を付ける必要があります。


私たちはリンクで雑誌を見て、次のものを取得しようとします:



This page is under construction
      
      





課題のテキストを読み直して、ヒントに気付きます。

これは、データ転送が非常に遅いため、正しく優先順位を付ける必要があります


会話はHTTPリクエストフィールド(Accept-Charset、Accept-Encoding、Accept-Language、Acceptなど)に関するものだと考えて、1日の前半を殺しました。 いいえ。



さらに検索すると、サーバーがHTTP / 2をサポートしていることがわかりました。 そして、彼の非常に公表された革新の1つは、正確にリクエストの優先順位付けです。



優先順位を変更してnghttpを見つけるための何かを探しています。



お試しください
ルート@カーリー:〜#nghttp -p 3 -v 213.170.100.212

[0.055]接続済み

ネゴシエートされたプロトコル:h2

[0.166] SETTINGSフレーム<length = 12、flags = 0x00、stream_id = 0>を送信します

(niv = 2)

[SETTINGS_MAX_CONCURRENT_STREAMS(0x03):100]

[SETTINGS_INITIAL_WINDOW_SIZE(0x04):65535]

[0.167]優先フレームを送信<長さ= 5、フラグ= 0x00、stream_id = 3>

(dep_stream_id = 0、 weight = 201 、exclusive = 0)

[0.167]優先フレームを送信<長さ= 5、フラグ= 0x00、stream_id = 5>

(dep_stream_id = 0、 weight = 101 、exclusive = 0)

[0.168]優先フレームを送信<長さ= 5、フラグ= 0x00、stream_id = 7>

(dep_stream_id = 0、 weight = 1 、exclusive = 0)

[0.168]優先フレームを送信<長さ= 5、フラグ= 0x00、stream_id = 9>

(dep_stream_id = 7、 weight = 1 、exclusive = 0)

[0.169]優先フレーム<length = 5、flags = 0x00、stream_id = 11>を送信します

(dep_stream_id = 3、 weight = 1 、exclusive = 0)

[0.169] HEADERSフレームの送信<長さ= 38、フラグ= 0x25、stream_id = 13>

; END_STREAM | END_HEADERS | 優先順位

(padlen = 0、dep_stream_id = 11、 weight = 3 、exclusive = 0)

; 新しいストリームを開く

:メソッド:GET

:パス:/

:スキーム:https

:権限:213.170.100.212

受け入れます:* / *

accept-encoding:gzip、deflate

ユーザーエージェント:nghttp2 / 1.18.1

[0.232] recv SETTINGSフレーム<長さ= 18、フラグ= 0x00、stream_id = 0>

(niv = 3)

[SETTINGS_MAX_CONCURRENT_STREAMS(0x03):100]

[SETTINGS_INITIAL_WINDOW_SIZE(0x04):65536]

[SETTINGS_MAX_FRAME_SIZE(0x05):16384]

[0.233] recv WINDOW_UPDATEフレーム<長さ= 4、フラグ= 0x00、stream_id = 0>

(window_size_increment = 196605)

[0.233] recv SETTINGSフレーム<長さ= 0、フラグ= 0x01、stream_id = 0>

; ACK

(niv = 0)

[0.233] recv(stream_id = 13):ステータス:200

[0.234] recv(stream_id = 13)etag: "21-58a4a130-a2bf2"

[0.234] recv(stream_id = 13)最終変更日:2017年2月15日水曜日18:42:56 GMT

[0.234] recv(stream_id = 13)content-type:text / html

[0.234] recv(stream_id = 13)content-length:33

[0.234] recv(stream_id = 13)accept-ranges:バイト

[0.235] recv(stream_id = 13)日付:月、2017年3月20日12:01:24 GMT

[0.235] recv(stream_id = 13)サーバー:NQ-webserver

[0.235] recv HEADERSフレーム<長さ= 96、フラグ= 0x04、stream_id = 13>

; END_HEADERS

(padlen = 0)

; 最初の応答ヘッダー

このページは作成中です

[0.236] recv DATAフレーム<長さ= 33、フラグ= 0x00、stream_id = 13>

[0.236] recv DATAフレーム<長さ= 0、フラグ= 0x01、stream_id = 13>

; END_STREAM

[0.236] GOAWAYフレームを送信<長さ= 8、フラグ= 0x00、stream_id = 0>

(last_stream_id = 0、error_code = NO_ERROR(0x00)、opaque_data(0)= [])





そして、これで私の熱意が尽きました。 その時点では、誰もまだこのフラグを取ることができませんでした。 いくつかの異なる優先度値を偶然見つけて、正しい値に入らないので、間違ったパスを再度選択し、次のタスクに進んだと判断しました。



すべての可能な値について徹底的な検索を行う必要があることがすべて判明したため、



 !/bin/bash until [$i -eq 256] do let "i=i+1" nghttp -p $i https://213.170.100.212/ done exit 0
      
      





取得するもの:
ルート@カーリー:〜#./123

このページは作成中です

このページは作成中です

このページは作成中です

このページは作成中です

このページは作成中です

このページは作成中です

このページは作成中です

このページは作成中です

このページは作成中です

このページは作成中です

このページは作成中です

このページは作成中です

このページは作成中です

このページは作成中です

このページは作成中です

このページは作成中です

このページは作成中です

このページは作成中です

BB

14

7E

F9

2D

66

4D

52

18

14

0A

16

AD

3F

C5

03

このページは作成中です

このページは作成中です

このページは作成中です

このページは作成中です

このページは作成中です

このページは作成中です

このページは作成中です

このページは作成中です



サイトに受け取ったフラグを入力すると、次のように表示されます。

キーが受け入れられました(クエストがタイムアウトしました)


さて、今回の永続性は明らかに私にとって十分ではありませんでした。 しかし、ctfの精神は私を捕らえました。 オーガナイザーのすばらしい探求に感謝します。 継続することを本当に楽しみにしており、生産性が向上することを願っています。



All Articles