newbieからバイナリアンへ

newbieからバイナリアンへ

コンピュータ初心者からバイナリアンを目指す大学生日記

【memo】 pwn環境構築の覚書

 

 

 

 

 

 

 

 

 1: イントロ

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

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

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

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

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

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

 

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

 

 

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

github.com




なお自分の環境は

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

 

2: gdb

sudo apt install gdb



3:pwndbg

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

 

4:checksec

 sudo apt install checksec

 

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

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

 

gyazo.com

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

 

5: pwntools

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

6:rp

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

 

7: exploitのテンプレ

 #!/usr/bin/env python
 #encoding: utf-8;
 
 from pwn import *
 import sys
 
 FILENAME = ""
 
 rhp2 = {'host':"localhost",'port':12300}
 context(os='linux',arch='')
 binf = ELF(FILENAME)
 
 def exploit(conn):
   pass
 
 
 if len(sys.argv)>1:
   if sys.argv[1][0]=="d":
     cmd = """
       set follow-fork-mode parent
     """
     conn = gdb.debug(FILENAME,cmd)
   elif sys.argv[1][0]=="r":
     conn = remote(rhp1["host"],rhp1["port"])
 else:
     conn = remote(rhp2['host'],rhp2['port'])
 exploit(conn)
 conn.interactive()

8: socatのテンプレ

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

 

 

9: Ghidra

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

 

 

 

 

続く