newbieからバイナリアンへ

【memo】 pwn環境構築の覚書

 

 

 

 

 

 

 

 

 1: イントロ

先日、VMが色々と詰まった外づけHDDの中身が失われてしまい

粛々とリインストールしているときに

折角の機会だからKaliもネイティブじゃなくてこっちに入れてしまおうと思いついた

こっちでもpwnができるように真っ白なkaliをセットアップしていたのだが

一々手作業でインストールするのが面倒だったため

インストールするものとスクリプト自分用覚書程度にまとめた

 

これで次に真っ白なPCでpwnをやりたいというときも簡単にできそうだ。。。

 

 

全部まとめたスクリプトがこちら

github.com




なお自分の環境は

  1. Linux kalipc 5.3.0-kali3-amd64 #1 SMP Debian 5.3.15-1kali1 (2019-12-09) x86_64 GNU/Linux

 

2: gdb

  1. sudo apt install gdb



3:pwndbg

  1. git clone https://github.com/pwndbg/pwndbg \0
  2. && cd pwndbg
  3. && ./setup.sh

 

4:checksec

  1. sudo apt install checksec

 

但し、このままだと表示が若干ややこしいため最初に示したリポジトリスクリプトを使ったほうがいいかも

これを使うと以下のように表示される

 

gyazo.com

これまでより表示が増えてなんか得した気分になるね

 

5: pwntools

  1. sudo apt install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential \0
  2. && python3 -m pip install --upgrade pip \0
  3. && sudo python3 -m pip install --upgrade git+https://github.com/Gallopsled/pwntools.git@dev3 \0
  4. && sudo pip install --upgrade pwntools

6:rp

  1. sudo wget https://github.com/downloads/0vercl0k/rp/rp-lin-x64 -O /bin/rp \0
  2. && sudo chmod +x /bin/rp

 

7: exploitのテンプレ

  1. #!/usr/bin/env python
  2. #encoding: utf-8;
  3. from pwn import *
  4. import sys
  5. FILENAME = ""
  6. rhp2 = {'host':"localhost",'port':12300}
  7. context(os='linux',arch='')
  8. binf = ELF(FILENAME)
  9. def exploit(conn):
  10. pass
  11. if len(sys.argv)>1:
  12. if sys.argv[1][0]=="d":
  13. cmd = """
  14. set follow-fork-mode parent
  15. """
  16. conn = gdb.debug(FILENAME,cmd)
  17. elif sys.argv[1][0]=="r":
  18. conn = remote(rhp1["host"],rhp1["port"])
  19. else:
  20. conn = remote(rhp2['host'],rhp2['port'])
  21. exploit(conn)
  22. conn.interactive()

8: socatのテンプレ

  1. socat -v tcp-listen:12300,fork,reuseaddr exec:.

 

 

9: Ghidra

  1. #JDK+11のインストール
  2. sudo apt install openjdk-13-jdk
  3. #Ghidraのインストール
  4. wget https://ghidra-sre.org/ghidra_9.1.1_PUBLIC_20191218.zip
  5. unzip ./ghidra_9.1.1_PUBLIC_20191218.zip
  6. ./ghidra_9.1_1_PUBLIC/ghidraRun
  7. #JDKのホームディレクトリを指定するよう促されるため、/usr/lib/jvm/java-11-openjdk-amd64/ を指定

 

 

 

 

続く