1. ๋งฅ๋ฝ(context)
์ฃผ์ ๋ฉ๋ชจ๋ฆฌ๋ค์ ์ํ๋ฅผ ๊ฐ๋ ์ฑ ์๊ฒ ๋ณด์ฌ์ค๋ค. ํฌ๊ฒ 4๊ฐ ์์ญ์ผ๋ก ๊ตฌ๋ถ๋๋ค.
1. REGISTERS
๋ ์ง์คํฐ์ ์ํ๋ฅผ ๋ณด์ฌ์ค๋ค.
2. DISASM
rip๋ถํฐ ๋์ค์ด์
๋ธ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋ค.
3. STACK
rsp๋ถํฐ ์คํ์ ๊ฐ๋ค์ ๋ณด์ฌ์ค๋ค.
4. BACKTRACE
ํ์ฌ rip์ ๋๋ฌํ ๋๊น์ง ์ด๋ค ํจ์๋ค์ด ์ค์ฒฉ๋์ด ํธ์ถ๋๋์ง ๋ณด์ฌ์ค๋ค.
2. entry
entry
์ง์ ์ ๋ถํฐ ํ๋ก๊ทธ๋จ์ ๋ถ์ํ ์ ์๊ฒ ํด์ค๋ค. DISASM ์์ญ์ ํ์ดํ(โบ)๊ฐ ๊ฐ๋ฆฌํค๋ ์ฃผ์๋ ํ์ฌ rip์ ๊ฐ์ด๋ค.

3. break & continue / run / start
break(b)
ํน์ ์ฃผ์์ ์ค๋จ์ (breakpoint)์ ์ค์ ํ๋ ๊ธฐ๋ฅ
continue(c)
์ค๋จ๋ ํ๋ก๊ทธ๋จ์ ๊ณ์ ์คํ์ํค๋ ๊ธฐ๋ฅ
run(r)
ํ๋ก๊ทธ๋จ์ ์ฒ์๋ถํฐ ์คํ์ํค๋ ๊ธฐ๋ฅ
start (main ๋ช ๋ น์ด๋ ๋์ผ)
main() ์ฌ๋ณผ์ด ์กด์ฌํ๋ฉด main()์ ์ค๋จ์ ์ ์ค์ ํ ํ ์คํ, ์กด์ฌํ์ง ์์ผ๋ฉด ์ง์ ์ ์ ์ค๋จ์ ์ ์ค์ ํ ํ ์คํ
4. disassembly
disassemble
gdb๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ ๋์ค์ด์ ๋ธ ๋ช ๋ น์ด, ํด๋น ํจ์๊ฐ ๋ฐํ๋ ๋๊น์ง ์ ๋ถ ๋์ค์ด์ ๋ธํ์ฌ ์ถ๋ ฅํ๋ค.

u, nearpc, pdisass
pwndbg์ ๊ธฐ๋ฅ, ๋์ค์ด์ ๋ธ๋ ์ฝ๋๋ฅผ ๊ฐ๋ ์ฑ์๊ฒ ์ถ๋ ฅํด์ค๋ค.



5. navigate
ni(next instruction) & si(step into)
ni๋ ์๋ธ๋ฃจํด์ ๋ด๋ถ๋ก ๋ค์ด๊ฐ์ง ์์ง๋ง,
si๋ ์๋ธ๋ฃจํด์ ๋ด๋ถ๋ก ๋ค์ด๊ฐ๋ค๋ ์ฐจ์ด์ ์ด ์๋ค.
finish
si๋ก ํจ์ ๋ด๋ถ์์ ํ์ํ ๋ถ๋ถ์ ๋ชจ๋ ๋ถ์ํ๋๋ฐ, ํจ์์ ๊ท๋ชจ๊ฐ ์ปค์ ni๋ก๋ ์๋ ์คํ ํ๋ฆ์ผ๋ก ๋์๊ฐ๊ธฐ ์ด๋ ค์ธ ์ ์๋ค. ์ด๋ด ๋ finish๋ฅผ ์ฌ์ฉํ์ฌ ํจ์์ ๋๊น์ง ํ ๋ฒ์ ์คํํ ์ ์๋ค.
6. examine
ํ๋ก๊ทธ๋จ์ ๋ถ์ํ๋ค ๋ณด๋ฉด ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ ์์ ์ฃผ์์ ๊ฐ์ ๊ด์ฐฐํด์ผ ํ ๋๊ฐ ์๋ค.
gdb์์๋ ๋ฉ๋ชจ๋ฆฌ ์กฐํ๋ฅผ ์ํด x ๋ช ๋ น์ด๋ฅผ ์ ๊ณตํ๋ค.
x
ํน์ ์ฃผ์์์ ์ํ๋ ๊ธธ์ด๋งํผ์ ๋ฐ์ดํฐ๋ฅผ ์ํ๋ ํ์์ผ๋ก ์ธ์ฝ๋ฉํ์ฌ ๋ณผ ์ ์๋ค.
์1) rsp๋ถํฐ 80๋ฐ์ดํธ๋ฅผ 8๋ฐ์ดํธ์ฉ hexํ์์ผ๋ก ์ถ๋ ฅ
x/10gx $rsp
์2) rip๋ถํฐ 5์ค์ ์ด์
๋ธ๋ฆฌ ๋ช
๋ น์ด ์ถ๋ ฅ
x/5i $rip
์3) ํน์ ์ฃผ์์ ๋ฌธ์์ด ์ถ๋ ฅ
x/s 0x400000
7. telescope
telescope(tele)
pwndbg๊ฐ ์ ๊ณตํ๋ ๋ฉ๋ชจ๋ฆฌ ๋คํ ๊ธฐ๋ฅ์ด๋ค. ํน์ ์ฃผ์์ ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ ๋ํด, ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฐธ์กฐํ๊ณ ์๋ ์ฃผ์๋ฅผ ์ฌ๊ท์ ์ผ๋ก ํ์ํ์ฌ ๊ฐ์ ๋ณด์ฌ์ค๋ค.
8. vmmap
vmmap
vmmap์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ ์ด์์์ ๋ณด์ฌ์ค๋ค. ์ด๋ค ํ์ผ์ด ๋งคํ๋ ์์ญ์ผ ๊ฒฝ์ฐ, ํด๋น ํ์ผ์ ๊ฒฝ๋ก๊น์ง ๋ณด์ฌ์ค๋ค.
9. gdb / python
gdb๋ก ํ๋ก๊ทธ๋จ์ ๋๋ฒ๊น ํ ๋, ํค๋ณด๋๋ก ํ์ดํํ๊ธฐ ์ด๋ ค์ด ๋ณต์กํ ๊ฐ์ ์ ๋ ฅํ๊ณ ์ถ์ ๋๊ฐ ์๋ค. ์ด์ฉ์๊ฐ ์ง์ ์์ฑํ ์ ์๋ ๊ฐ์ ํ์ด์ฌ์ผ๋ก ์์ฑํ ๋ค, ํ๋ก๊ทธ๋จ์ผ๋ก ๋๊ฒจ์ฃผ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ๋๋ค.
gdb / python argv
run์ ๋ช ๋ น์ด ์ธ์๋ก $()์ ํจ๊ป ํ์ด์ฌ ์ฝ๋๋ฅผ ์ ๋ ฅํ๋ฉด ๊ฐ์ ์ ๋ฌํ ์ ์๋ค.
์) printํจ์๋ฅผ ํตํด ์ถ๋ ฅํ ๊ฐ์ run์ ์ธ์๋ก ์ ๋ฌํ๋ ๋ช ๋ น
r $(python3 -c "print('\xff' * 100)")
gdb / python input
$()์ ํจ๊ป ํ์ด์ฌ ์ฝ๋๋ฅผ ์ ๋ ฅํ๋ฉด ๊ฐ์ ์ ๋ ฅํ ์ ์๋ค. ์ ๋ ฅ๊ฐ์ผ๋ก ์ ๋ฌํ๊ธฐ ์ํด <<<๋ฅผ ์ฌ์ฉํ๋ค.
์) argv[1]์ ์์์ ๊ฐ์ ์ ๋ฌํ๊ณ , ๊ฐ์ ์ ๋ ฅํ๋ ๋ช ๋ น์ด
r $(python3 -c "print('\xff' * 100)") <<< $(python3 -c "print('dreamhack')")
10. gdb์ ๋ช ๋ น์ด ์ถ์ฝ ์ ๋ฆฌ
b: break
c: continue
r: run
si: step into
ni: next instruction
i: info
k: kill
pd: pdisas