Open18

Pwnに入門したい

0Yu0Yu

objdump
問題実行ファイルの逆アセンブルに使用する
Binutilsをインストール

$ sudo apt install binutils

逆アセンブルコマンドは

$ objdump -d M intel hogehoge > hogehoge.txt
0Yu0Yu
$ docker image ls

でNginxのイメージを取得

0Yu0Yu
  • 起動中のコンテナの確認
$ docker container ls
  • コンテナ内のbashを起動する
$ docker exec -it [CONTAINER ID] /bin/bash
0Yu0Yu
  • readelf コマンド
    実行ファイルのサイズが大きい場合などに実行時に配置されるメモリアドレスを調べる
0Yu0Yu

補足

[問題]
pip3 install pwntoolsで弾かれる
[解決]
set up tools-rustがない(from setuptools_rust import RustExtension ModuleNotFoundError: No module named 'setuptools_rust')といわれていたので、pip install setuptools-rustする
https://pypi.org/project/setuptools-rust/
その後pip install --upgrade pipし再度pip3 install pwntoolsで成功

Successfully installed bcrypt-3.2.0 capstone-4.0.2 colored-traceback-0.3.0 cryptography-3.4.7 intervaltree-3.1.0 mako-1.1.4 paramiko-2.7.2 pathlib2-2.3.5 plumbum-1.7.0 psutil-5.8.0 pwntools-4.5.1 pyelftools-0.27 ropgadget-6.5 rpyc-5.0.1 unicorn-1.0.2rc3
WARNING: Running pip as root will break packages and permissions. You should install packages reliably by using venv: https://pip.pypa.io/warnings/venv
0Yu0Yu

実行ファイルを逆アセンブル
obdjump -d -M intel hogehoge > hogehoge.txt

0Yu0Yu

アセンブリ言語の文法はシンプル

一行ごとに
ニーモニックス:命令の種類を表す
ディスティネーションとソース:操作対象を示す
が書かれている

各命令は、ソース(とディスティネーション)を読んで演算し、結果をディスティネーションに書き込む。
ソースとディスティネーションをあわせてオペランドという。

0Yu0Yu

oneGadget導入
$ sudo apt install ruby
$ sudo gem install one_gadget