読者です 読者をやめる 読者になる 読者になる

Pwn De Ring

初心者がPwnを勉強していくために使っている標準出力先です。

socatを使おう

socatとは

Pwnの問題には、プログラム自信がlistenやacceptといった関数を使ってネットワーク的な機能を持つバイナリのfork-server型とそうでない問題がある。後者の場合はxinetd型と呼ばれている。問題として配布されたバイナリをxinetdにのせるのは面倒なので、普段socatというプログラムを使ってこれを実現する。

socatのインストール

Ubuntuの方は、apt-getで入る.

sudo apt-get install socat

socatの使い方

ワンライナーで利用することができる。

$ socat TCP-LISTEN:ポート番号,reuseaddr,fork EXEC:./バイナリ名&

これで起動した後は、普段のexploitコードのhostとportを以下のように設定してあげれば良い.普段私はremoteのrをコマンドライン引数として渡した時のみremote先にexploitするようにif文で条件分岐させている。

# Exploitの例
# 例
host = "localhost"
port = 8888

if ARGV[0] == "r"
    # 例
    host = "remotehost"
    port = 52117       
end