gdb ์ฌ์ฉ๋ฒ ์ตํ๊ธฐ
gdb๋ ๋ฆฌ๋ ์ค์ ๋ํ์ ์ธ ๋๋ฒ๊ฑฐ์ค ํ๋!
ELF
- ๋ฆฌ๋ ์ค ์คํ ํ์ผ ํ์
- ํฌ๊ฒ ํค๋์ ์ฌ๋ฌ ํ์์ผ๋ก ์ด๋ฃจ์ด์ง
--> ELF ์ ํค๋์ ์ง์ ์ (EP) ํ๋ ์กด์ฌ (OS๋ ELF๋ฅผ ์คํํ ๋ EP๋ถํฐ ํ๋ก๊ทธ๋จ ์คํ)
//ํด๋น ๋ช
๋ น์ด๋ฅผ ํตํด ์ง์
์ ํ์ธ ๊ฐ๋ฅ
//entry point address
readelf -h debugee(ํ์ผ๋ช
)
entry point address : 0x1060
gdb์์ start ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด ์ง์ ์ ์ฃผ์๋ฅผ rip๊ฐ ๊ฐ๋ฆฌํค๊ณ ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
gdb <์คํํ์ผ>
(gdb) start
<context>
1. registers : ๋ ์ง์คํฐ์ ์ํ๋ฅผ ๋ณด์ฌ์ค
2. disasm : rip๋ถํฐ ์ฌ๋ฌ์ค์ ๊ฑธ์ณ ๋์ค์ด์ ๋ธ(๊ธฐ๊ณ์ด -> ์ด์ ๋ธ๋ฆฌ)๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค
3. stack : rsp๋ถํฐ ์ฌ๋ฌ์ค์ ๊ฑธ์ณ ์คํ์ ๊ฐ๋ค์ ๋ณด์ฌ์ค
4. backtrace : ํ์ฌ rip์ ๋๋ฌํ ๋๊น์ง ์ด๋ค ํจ์๋ค์ด ์ค์ฒฉ๋์ด ํธ์ถ๋๋์ง ๋ณด์ฌ์ค
break & continue
break : ํน์ ์ฃผ์์ ์ค๋จ์ ์ค์
continue : ์ค๋จ๋ ํ๋ก๊ทธ๋จ์ ๊ณ์ ์คํ์ํด
b *main
+) pwndbg๋ฅผ ์ฌ์ฉํ๋ค๋ฉด u ๋๋ nearpc ๋ช ๋ น์ด๋ฅผ ํตํด ๊น๋ํ๊ฒ ์ถ๋ ฅ ๊ฐ๋ฅ
[GDB ๋ช ๋ น์ด ์ ๋ฆฌ]
disas ํจ์๋ช : ํด๋น ํจ์์ ์ด์ ๋ธ๋ฆฌ์ด๋ฅผ ๋ณด์ฌ์ค๋ค. ex) disas main
b *ํจ์๋ช +์์ or b *๋ฉ๋ชจ๋ฆฌ์ฃผ์ .. : ํด๋น ์์ญ์ breakpoint
n(next) : ๋ค์ ์ฝ๋ ์งํ
c(continue) : ์ค๋จ์ ์ฌ๋๊น์ง ๋ฉ์ถ์ง์๊ณ ์งํ
ni(next instruction): ์ด์ ๋ธ๋ฆฌ์ด ํ์ค ์คํ(ํจ์ ์์ผ๋ก x)
si(step into): ์ด์ ๋ธ๋ฆฌ์ด ํ์ค ์คํ(ํจ์ ์์ผ๋ก)
finish : si๋ก ํจ์์์ ๋ค์ด๊ฐ์ง๋ง ๊ทธ๋ง ํจ์๋ฅผ ๋์ค๊ณ ์ถ์ ๋ ํจ์์ ๋์ผ๋ก ์ด๋์์ผ์ค
p $๋ ์ง์คํฐ๋ช : ๊ฐ์ ํ๋ฆฐํธํจ
p/[์ถ๋ ฅํ์] ๋ ์ง์คํฐor๋ณ์ : ๊ณ์ฐ ๊ฒฐ๊ณผ ํ์ธ ๊ฐ๋ฅ
x/d ์ฃผ์ or $๋ ์ง์คํฐ : ์ฃผ์ or ๋ ์ง์คํฐ ๊ฐ์ ์ ์๋ก ๋ณด์ฌ์ค
x/s ์ฃผ์ or $๋ ์ง์คํฐ : String์ผ๋ก ๋ณด์ฌ์ค
x/gx ์ฃผ์ or $๋ ์ง์คํฐ : 8byte ๋งํผ ๋ณด์ฌ์ค
x/wx ์ฃผ์ or $๋ ์ง์คํฐ : 4byte๋งํผ ๋ณด์ฌ์ค
x/10i : ์๋ฅผ ๋ค์ด 10i ์ธ ๊ฒฝ์ฐ rip๋ถํฐ 10์ค์ ๋ช ๋ น์ด๋ฅผ ์ด์ ๋ธ๋ฆฌ๋ก ๋ณด๊ฒ ๋ค.
jump ํจ์ or ํ or ๋ฉ๋ชจ๋ฆฌ : ๊ฐ์ ์ ํ
info r : ๋ ์ง์คํฐ ๋ณด๊ธฐ(์ ์ฒด)
info r $๋ ์ง์คํฐ : ํน์ ๋ ์ง์คํฐ ๋ณด๊ธฐ
tele(telescope): ๊ฐ๋ ฅํ ๋ฉ๋ชจ๋ฆฌ ๋คํ ๊ธฐ๋ฅ , ํน์ ์ฃผ์์ ๋ฉ๋ชจ๋ฆฌ ๊ฐ ๋ฟ๋ง ์๋๋ผ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฐธ์กฐํ๊ณ ์๋ ์ฃผ์๋ฅผ ์ฌ๊ท์ ์ผ๋ก ํ์ํ์ฌ ๊ฐ์ ๋ณด์ฌ์ค๋ค.
vmmap : ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ ์ด์์์ ๋ณด์ฌ์ค๋ค.
** ์ ๋ ฅ๊ฐ์ด ํ์ํ ๋ ํค๋ณด๋๋ฅผ ํตํด ์ ๋ ฅ ๋ถ๊ฐ๋ฅํ ๊ฐ์ธ ๊ฒฝ์ฐ
ex) ํ์ด์ฌ์ ์ด์ฉํด ์ธ์ 2๊ฐ ์ ๋ ฅ ์์
r $(python -c 'print "\xff"*100') <<< $(python -c 'print "dreamhack"')
ํ์ด์ฌ ์ ๋ ฅ์ด ์๋จน์ด์ ๊ตฌ๊ธ๋ง ๊ฒฐ๊ณผ ํด๊ฒฐ๐ญ
https://stackoverflow.com/questions/15236832/how-do-i-reinstall-a-directory-in-usr-bin-python
[์ถ์ฒ]
dreamhack systemhacking
ARGOS ์์คํ ํดํน ์๋ฃ