⇤ ← 2015-04-27 20:48:40時点のリビジョン1
サイズ: 2190
コメント:
|
サイズ: 2211
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 4: | 行 4: |
== Tools == | = Tools = |
行 10: | 行 10: |
* nasm | |
行 20: | 行 21: |
== Shellcode == | = Shellcode = |
行 33: | 行 34: |
== x86/x86-64 ABI == | = x86/x86-64 ABI = |
行 36: | 行 37: |
== System call == | = System call = |
行 39: | 行 40: |
== Shellcode(slightly modified) == | = Shellcode(no /bin/sh) = |
行 41: | 行 42: |
// gcc -z execstack -fno-stack-protector -o baby2 baby2.c | // gcc -z execstack -fno-stack-protector -o baby1 baby1.c |
行 47: | 行 48: |
scanf("%1023s", buf); | fread(buf, 1, 4096, stdin); |
行 53: | 行 54: |
== Return-to-plt == | = Return-to-plt = |
行 59: | 行 60: |
int main() { | int f() { |
行 65: | 行 66: |
int main() { return f(); } | |
行 67: | 行 69: |
== ASLR == | = ASLR = |
行 70: | 行 72: |
== Return-to-libc == | = Return-to-libc = |
行 74: | 行 76: |
int main() { | int f() { |
行 80: | 行 82: |
int main() { return f(); } | |
行 83: | 行 86: |
== Return-to-plt revisited(x86-64) with tiny ROP == | = Return-to-plt revisited(x86-64) with tiny ROP = |
行 89: | 行 92: |
int main() { | int f() { |
行 95: | 行 98: |
int main() { return f(); } | |
行 99: | 行 103: |
== ROP == | = ROP = |
行 103: | 行 107: |
int main() { | int f() { |
行 108: | 行 112: |
int main() { return f(); } | |
行 110: | 行 115: |
= Pwn勉強会(Stack day 2) = | = 実践 = |
行 112: | 行 117: |
= Pwn勉強会(Heap day 1) = やりたいな |
Pwn勉強会(Stack day 1)
Tools
- Disassembler
- udcli / ndisasm
- objdump
- METASM / Hopper / IDA Pro
- Assembler
- nasm
- Pwntools
- METASM?
- Debugger
- gdb-peda
- Pwn toolkit
- Pwntools
- Ruby系でなにか
Python(Pwntools)とRuby(METASM? ctfライブラリ?)好きな方を選んで作業を進めてもらう.
Shellcode
x86/x86-64 ABI
チートシート
System call
システムコールの呼び出し方
Shellcode(no /bin/sh)
Return-to-plt
ASLR
ASLRについて説明
Return-to-libc
Return-to-plt revisited(x86-64) with tiny ROP
ROP
実践
適当な問題を探す