728x90 ๋ฐ์ํ Security Study83 webhacking web hacking - 1) ์๋ฒ์ ์๋ ๊ฐ์ธ์ ๋ณด ํ์ทจ 2) ์์คํ ํดํน์ ์ํ ๋ฐํ XSS(ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํธ) - ๊ณต๊ฒฉ์๊ฐ ์๋ฒ๋ฅผ ํตํด ์ฌ์ฉ์๋ฅผ ๊ณต๊ฒฉ ๋ค๋ฅธ ์ฌ์ฉ์์ฟ ํค๋ ์ธ์ ์์ด๋๋ฅผ ํ์ทจํด์ ์ฌ์ฉ์์ ๊ถํ์ ์ต๋sotored - ์ ์ฅ๋์๋ ๊ฒ (์ด๋ฒคํธ ํธ๋ค๋ฌ) – ์ด์ฉ ex) bob"onmouseover="alert(1)" ๋ฐ์ ๋์ค์ด ํ์คํฌ๋ฆฝํธ‘”a=’ ‘onerror=alert(1);> reflected – ์ฟ ๊ธฐ, ์ฌ์ฉ์์ ๊ฐ์ ์๋ฒ์ ๋ ๋ ธ์ ๋ ๋ฆฌํด๊ฐ์ผ๋ก ‘);alert(‘1%0aalert(1);/* -> %0a ๊ฐํ๋ฌธ์ ์ด์ฉ ๋ค์ด๋ก๋ ์ทจ์ฝ์ ../../target -> ์์ ๋๋ ํ ๋ฆฌ๋ก ์ฌ๋ผ๊ฐ../target%00 -> NULL.\./targetindex.phpinext.pp Security Study/Web 2015. 10. 16. system 24byte shellcode \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80 Security Study/System 2015. 10. 15. Use After Free use after free ๋ผ๋ ์ทจ์ฝ์ ์ ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ๋ ํฌ๊ฒ Code/Data/Heap/Stack์ผ๋ก ๋๋ ์ ์๋๋ฐ Code+Data=Binary์์ญ Heap=ํ๋ก๊ทธ๋๋จธ๊ฐ ๋์ ํ ๋น/ํ์/์ ์ด ํ ์ ์๋ ์์ญ Stack=ํจ์ ๊ฐ๋ณ๊ณต๊ฐ(์คํํ๋ ์),์ธ์์ ๋ฌ๋ฑ์ผ๋ก ์ฌ์ฉํ๋ ์์ญ ์ด๋ ๊ฒ ๊ตฌ๋ถํ ์ ์๋ค ์ด ์ค์์ UAF๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ํ ์์ญ์ ์๋ชป ๋ค๋ค์ ๋ ๋ฐ์ํ๋ ์ทจ์ฝ์ ์ด๋ค. ์๋์ ์์ค๋ฅผ ๋ณด์ #include #include typedef struct UAF{int number;}uaf; int main(void){uaf *one;uaf *two; one = malloc(100);printf("one->number:%d\n",one->number); one->number=12345;printf(.. Security Study/System 2015. 10. 12. memory ์์ญ memory code ์์ญ- ์ฝ๋๋ฅผ ๊ตฌ์ฑํ๋ memory ์์ญ์ผ๋ก hex file or bin fire memory- program ๋ช ๋ น์ด ์์นํ๋ ๊ณณ์ผ๋ก ๊ธฐ๊ณ์ด๋ก ์ ์ด๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค. data ์์ญ- ์ ์ญ๋ณ์, ์ ์ ๋ณ์, ๋ฐฐ์ด, ๊ตฌ์กฐ์ฒด ๋ฑ์ด ์ ์ฅ๋์ด ์๋ค. * ์ด๊ธฐํ ๋ ๋ฐ์ดํฐ๋ data ์์ญ์ ์ ์ฅ๋๊ณ ์ด๊ธฐํ ๋์ง ์์ ๋ฐ์ดํฐ๋ bss(block stated symbol)์ ์ ์ฅ๋๋ค. - ํ๋ก๊ทธ๋จ์ด ์คํ ๋ ๋ ์์ฑ๋์ด ํ๋ก๊ทธ๋จ ์ข ๋ฃ ์ ๊น์ง ์กด์ฌํ๋ค. - ํจ์ ๋ด๋ถ์ ์ ์ธ๋ static ๋ณ์๋ ํ๋ก๊ทธ๋จ์ด ์คํ ๋ ๋ ๊ณต๊ฐ๋ง ํ ๋น๋๊ณ , ํจ์๊ฐ ์คํ ๋ ๋ ์ด๊ธฐํ ๋๋ค. heap ์์ญ- ํ์์ ๋ฐ๋ผ ๋์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น ํ๊ณ ์ ํ ๋ ์์นํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ผ๋ก ๋์ ๋ฐ์ดํฐ ์์ญ์ด๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, ๋ฉ๋ชจ.. Security Study/System 2015. 10. 7. 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. ์ด์ 1 2 3 4 5 6 7 ๋ค์ 728x90 ๋ฐ์ํ