🪴 あやめHex

Search

Search IconIcon to open search

pwn を解く為に必要なステップ

Last updated Nov 26, 2022 Edit Source

脆弱性の種類と,その攻略方法

段階例
VulnerabilitiesStack BOF, Heap BOF, Use After Free, Format String Bug, Race Condition …
Exploit Techniquesret2plt, ret2libc, ROP, GOT Overwrite, Stack pivot …
Anti-ExploitsNX, ASLR, RELRO, PIE, Stack Canary …

flagを獲得する方法

  1. シェルコードを実行
    1. Exec-shell系
    2. Exec-shell + バックコネクト系
    3. shellcode - Qiita
  2. system("/bin/sh")やexecve("/bin/sh", 0, 0)を実行
    1. 必要に応じてdup2したりする
  3. open(“flag”) -> read() -> write()
    1. サンドボックスでexec系が禁止されているケース,chrootされているケースなどで有効

# バイナリ解析

動的解析

デバッグ情報

必要なコマンド

1
2
3
4
5
6
7
8
9
$ (cat out; cat) | ./a.out
$ nm -D ./a.out | grep " system"
$ strings -a -tx ./libc.so.6 | grep "sh$"
$ objdump -S -M intel ./libc.so.6 --disassemble=execve
$ ldd a.out
$ echo -en ""
$ grep -E ""
$ one_gadget ./libc.so.6
$ ROPgadget --binary ./a.out

# gccオプション

やることオプション
SSP 無効-fno-stack-protector
SSP 有効 (default)-fstack-protector
NX bit 無効-z execstack
NX bit 有効 (default)-z
No RELRO-Wl,-z,norelro
Partial RELRO-Wl,-z,relro,-z lazy
Full RELRO (default)-Wl,-z,relro,-z,now
ASLR 無効sudo sysctl kernel.randomize_va_space=0
ASLR 有効 (default)sudo sysctl kernel.randomize_va_space=2
PIE 無効-fno-pie -no-pie
PIE 有効 (default)-fPIE -pie
Exec-Shield 無効sudo sysctl -w kernel.exec-shield=0
Exec-Shield 有効 (default)sudo sysctl -w kernel.exec-shield=1