|
|
|
|
|
|
|
|
|
|
|
|
|
1574, 77/79 |
|
APlusHacker | |||||||
¹öÆÛ ¿À¹öÇ÷ο쿡 °üÇÑ Áú¹®ÀÔ´Ï´Ù. µµ¿òºÎŹµå·Á¿ä | |||||||
http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_system&no=1729 [º¹»ç]
Hit : 3834 Date : 2014/02/08 12:49
|
|||||||
Turtle1000 | 1. 1. NOPÀº No OperationÀÇ ¾àÀÚ·Î \x90À» ÀǹÌÇÕ´Ï´Ù. \x41ÀÎ A¿Í´Â ´Ù¸£°í¿ä. º¸Åë NOPÀ» ³Ö¾îÁÖ´Â ÀÌÀ¯´Â ½©Äڵ尡 µé¾î°£ À§Ä¡¸¦ 'Á¤È®È÷' ¾ËÁö ¸øÇÒ ¶§ ÀÔ´Ï´Ù. ¿¹¸¦ µé¾îµå¸®¸é, // µð·ºÅ丮 À§Ä¡´Â /home/user/vuln.c #include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char str[256]; // dummy = 8; strcpy(str, argv[1]); printf("%s\n", str); return 0; } À§¿Í °°Àº Äڵ尡 ÀÖ´Ù°í °¡Á¤Çغ¸°Ú½À´Ï´Ù.(C ¾ð¾î´Â ¾Æ½Å´Ù°í °¡Á¤Çß½À´Ï´Ù.) gcc vuln.c -o vuln -> À¸·Î ÄÄÆÄÀÏÀ» ÇÏ°í, gdb·Î ºÐ¼®Çغ¸´Ï /home/user/vuln A*243 + (25¹ÙÀÌÆ® ½©ÄÚµå) + ¸®ÅÏÁÖ¼Ò ÀÇ ¸®ÅÏÁÖ¼Ò°¡ 0xbffffabc °¡ ³ª¿Ô½À´Ï´Ù.(¿¹¸¦ µé¾î¼¿ä.) ±×·±µ¥ ±×³É ./vuln A*243 ~ À¸·Î ½ÇÇàÀ» Çϸé Segmentation Fault °¡ ¶ß°Ô µË´Ï´Ù. ÀÚ¼¼È÷ ¼³¸íÀº ¸øÇص帮°ÚÁö¸¸, ÇÁ·Î±×·¥ À̸§ÀÇ ±æÀÌÂ÷ÀÌ¿¡ ÀÇÇؼ ±×·±°Ì´Ï´Ù. ±×·¸±â ¶§¹®¿¡ ½ÇÁ¦ ¸®ÅÏÁÖ¼Ò´Â 18 ¹ÙÀÌÆ® Â÷ÀÌ°¡ ³ª°ÔµË´Ï´Ù. ÇÏÁö¸¸, ÀÌ·±°É °è»êÇϱâ´Â ±ÍÂú°ÚÁÒ ? ±×·¸±â ¶§¹®¿¡ NOPÀ» ¾²´Â °Ì´Ï´Ù. À§ÀÇ Äڵ屸¼ºÀ» ./vuln NOP*243 + (25¹ÙÀÌÆ® ½©ÄÚµå) + ¸®ÅÏÁÖ¼Ò -> ·Î ±¸¼ºÇÏ°Ô µÇ¸é, NOP*243 ¿µ¿ª Áï, 243 ¹ÙÀÌÆ® ¸¸ÅÀÇ ÁÖ¼Ò ¿ÀÂ÷°¡ ÀÖ´õ¶óµµ NOPÀ» Ÿ°í¼ ½©ÄÚµåÀÇ À§Ä¡±îÁö °¡°ÔµÇ´Â °Ì´Ï´Ù. ÀÌ°ÍÀ» NOP Sled ¶ó°í ÇÕ´Ï´Ù. »ì¦ À߸ø ¾Ë°í °è½Å °Í °°¾Æ¼ Á» ¼³¸íµå·È±¸¿ä. ¾Æ¸¶ `python -c 'print ~'` À¸·Î ±¸¹®À» ³ÖÀ¸½ÇÅÙµ¥, ½©Äڵ尡 ¸Þ¸ð¸®¿¡ ¿Ã¶ó°¡´Â °ÍÀÌ ¸Â½À´Ï´Ù. |
2014/02/09 | |
Turtle1000 | 2. ½©ÄÚµå´Â º¸Åë... C¾ð¾î -> strace -> asm -> ... ÀÇ °úÁ¤À» °ÅÃļ ¸¸µé ¼ö Àִµ¥, ¾î´ÀÁ¤µµ ¾î¼ÀÀ» ÇÒ ÁÙ ¾Æ½Å´Ù¸é Á¤¸» ½±°í °£´ÜÇÏ°Ô ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ, ¿î¿µÃ¼Á¦¸¶´Ù ½©ÄÚµå´Â ´Ù¸¨´Ï´Ù. |
2014/02/09 | |
Turtle1000 | 3. ½©Äڵ带 ¾î¶²½ÄÀ¸·Î ¿Ã·Á¼ »ç¿ëÇϽôÂÁö ¾È½áÁּż µÎ °¡Áö ¹æ¹ýÀ» ¾Ë·Áµå¸®°Ú½À´Ï´Ù. 1. char str[256]°ú °°Àº º¯¼ö¿¡ ³Ö¾î¼ ÁÖ¼Ò¸¦ ±¸ÇÏ´Â ¹æ¹ý ASLRÀÌ °É·ÁÀÖÁö ¾ÊÀº ³·Àº ¹öÀüÀÇ ¿î¿µÃ¼Á¦¿¡¼ ±¸ÇÒ ¶§´Â, gdb¸¦ ÀÌ¿ëÇؼ ±¸ÇÒ ¼öµµ ÀÖ°í, ÀÌ°Ô ¾î·Á¿ì½Ã¸é ¼Ò½ºÄڵ带 ±×´ë·Î º¹»çÇؼ ÆÄÀÏÀ̸§ÀÇ ±æÀÌ(±æÀÌ°¡ °°¾Æ¾ß ÇÕ´Ï´Ù.)¸¦ °°°Ô ÇÑ ÈÄ¿¡ printf("%p\n", &str[242]); -> ½©Äڵ尡 ¿Ã¶ó°¡´Â °÷À» Âï¾îÁÖ¸é µË´Ï´Ù. 2. ȯ°æº¯¼ö¸¦ ÀÌ¿ëÇÒ °æ¿ìÀÇ ¹æ¹ý º¸Åë export À̸§=`python -c 'print "\x90"*50 + "½©ÄÚµå"'` ¿Í °°Àº ¹æ½ÄÀ¸·Î ¸¹ÀÌ µî·ÏÇÕ´Ï´Ù. À̸¦ ¾Ë¾Æ³»±â À§Çؼ´Â, void main(int argc, char *argv[]) { printf("%p\n", getenv(argv[1])); } ¿Í °°Àº ¼Ò½ºÄڵ带 ÀÛ¼ºÇϼż ¾Ë¾Æ³»½Ã¸é µË´Ï´Ù. ¸¸¾à Á¤È®ÇÑ À§Ä¡¸¦ ¾Ë°í½Í´Ù¸é, #include <stdio.h> int main(int argc, char *argv[]) { char *ptr = argv[1]; ptr += (strlen(argv[0]) - strlen(argv[2])); printf("%p\n", ptr); return 0; } ./ÇÁ·Î±×·¥¸í ȯ°æº¯¼ö¸í ./°ø°ÝÇÒÇÁ·Î±×·¥¸í -> À» ¼öÇàÇϽøé Á¤È®ÇÑ ½©ÄÚµåÀÇ À§Ä¡°¡ ³ª¿É´Ï´Ù. (NOPÀÌ ÇÊ¿ä¾ø¾îÁö°Ô µË´Ï´Ù.) |
2014/02/09 | |
Turtle1000 | 4. Ãë¾àÇÑ ÇÔ¼öµéÀº ¹öÆÛÀÇ °æ°è°ªÀ» °Ë»çÇÏÁö ¾Ê½À´Ï´Ù. Áï, ¸®ÅÏÀ» ³Ñ¾î°¡´õ¶óµµ °ªÀ» ÀÔ·ÂÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌÁÒ. ½©Äڵ带 ¿Ã¸®´Â ¹æ¹ýÀº ¸Å¿ì ¸¹½À´Ï´Ù. ÇÒ´çµÈ ¹öÆÛ(char str[256] °°Àº)¿¡ ¿Ã¸®´Â ¹æ¹ý. À̶§´Â "\x90"*243 + ½©ÄÚµå + ¸®ÅÏÁÖ¼Ò -> ¿Í °°ÀÌ ±¸¼ºµË´Ï´Ù. ÇÒ´çµÈ ¹öÆÛ°¡ ³Ê¹« À۾Ƽ(char str[4]) ¸®ÅÏ µÚ¿¡ ½©Äڵ带 ³Ö¾îÁÙ ¶§, À̶§´Â "A"*8 + ¸®ÅÏÁÖ¼Ò + ½©ÄÚµå -> ¿Í °°ÀÌ ±¸¼ºÇÏ°í, µÚÀÇ ½©ÄÚµå ÁÖ¼Ò¸¦ ½áÁÖ¸é µË´Ï´Ù. ¸¶Âù°¡Áö·Î NOPÀ» ³Ö´Â ÀÌÀ¯´Â Á¤È®ÇÑ ½©ÄÚµåÀÇ À§Ä¡¸¦ ¾Ë ¼ö ¾øÀ»¶§°ÚÁÒ ? |
2014/02/09 | |
Turtle1000 | ¸¶Áö¸·À¸·Î, Ä«Æä¿¡¼ BOF ±Û ¾²°í ÀÖ½À´Ï´Ù ~ Â÷±ÙÂ÷±Ù º¸½Ã¸é¼ ¸ð¸£´Â °Å ÀÖÀ¸¸é ¹°¾îº¸¼¼¿ä ~ ÀÚ±â¼Ò°³ ºÎºÐ¿¡ ÀÖ¾î¿ä ~ |
2014/02/09 | |
APlusHacker | ÅÍƲ1000´Ô °¨»çÇÕ´Ï´Ù Å« µµ¿ò ‰ç½À´Ï´Ù.! |
2014/02/12 | |
|
|