|
|
|
¸®´ª½ºÆÁ Go Unix Power Tools Online Book
Go Bash Guide
|
|
Read No. 135 article |
2002-03-30 09:12:32 |
|
|
|
|
NickName |
Ç®ºñ´© |
Subject |
[¼Ò½º]PHP¿¡¼ÀÇ ¿ÜºÎ ÇÁ·Î±×·¥ ½ÇÇà°ú °³³ä |
|
|
http://211.110.17.28/bbs/view.html?
id=4962&code=tnt&start=30&mode=search&s_que=exec&field=body&operator=and
À¯¿ëÇÑ ÆÁÀÌ µÇ±æ ¹Ù¶ø´Ï´Ù.....
ÁÖ·Î »ç¿ëµÇ´Â ÇÔ¼ö
system, exec
passthru¿ÜºÎ ÇÁ·Î±×·¥À» ½ÇÇàÇϱâÀ§ÇØ 3°³ÀÇ ÇÔ¼ö°¡ ÁغñµÇ¾î ÀÖ½À´Ï´Ù.
¼¼ ÇÔ¼öÀÇ ¼·Î ´Ù¸¥ Á¡Àº ¸®ÅϵǴ °ªÀÔ´Ï´Ù. system ÇÔ¼ö´Â ÇÁ·Î±×·¥
½ÇÇà°á°ú¸¦ ¹®ÀÚ¿·Î µÇµ¹·Á ÁÝ´Ï´Ù. exec´Â ÇÁ·Î±×·¥À» ½ÇÇà°á°ú¸¦
¸¶Áö¸· ÇÑÁÙ·Î ¸¶Âù°¡Áö·Î ¹®ÀÚ¿·Î µÇµ¹·ÁÁÝ´Ï´Ù. passthru´Â ÇÁ·Î±×·¥
½ÇÇà °á°ú¸¦ ÀÖ´Â ±×´ë·ÎÀÇ ¹ÙÀ̳ʸ® µ¥ÀÌÅÍ·Î µÇµ¹·ÁÁÝ´Ï´Ù.
´Ù½Ã ¸»Çؼ ½ÇÇà°á°ú°¡ ÇÊ¿äÇÑ °æ¿ì´Â exec, ÅؽºÆ®¸¦ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥
½ÇÇà °á°ú°¡ ¸ðµÎ ÇÊ¿äÇÑ °æ¿ì¿¡´Â system, ¹ÙÀ̳ʸ®¸¦ Ãâ·ÂÇÒ ½ÇÇâ°á°ú°¡
ÇÊ¿äÇÑ °æ¿ì¿¡´Â passthru¸¦ »ç¿ëÇÏ¸é µË´Ï´Ù.
¶Ç backtick¿¬»êÀÚ¶ó´Â ±â°ÀÌ ÁغñµÇ¾î Àִµ¥ °ÅÀÇ system°ú µ¿µîÇÑ
±â°ÀÔ´Ï´Ù(system¿¡¼´Â ÇÁ·Î±×·¥ Á¾·á ½ºÅ×ÀÌÅͽº¸¦ ¾òÀ» ¼ö°¡ ÀÖÁö¸¸
backtick ¿¬»êÀÚ¿¡¼´Â±×·² ¼ö°¡ ¾ø½À´Ï´Ù.). ¹éÄõÅÍ(`)·Î µÑ·¯½Ñ ³»¿ëÀ»
½©¿¡ ³Ñ°Ü ½ÇÇà½ÃÅ°°í Ãâ·Â °á°ú¸¦ µÇµ¹·ÁÁÝ´Ï´Ù.
backtick ¿¬»êÀÚ »ç¿ë¿¹
1: $str = `/bin/ls -l /tmp`;
À̶ó´Â Çü½ÄÀ¸·Î ls °á°ú°ªÀÌ $str¿¡ µé¾î°©´Ï´Ù.
####ÁÖÀÇÁ¡(½ÃÄí¸°³ð°ü·Ã)####
systemµîÀÇ ¿ÜºÎ ÇÁ·Î±×·¥°ü¼ö¸¦ »ç¿ëÇÏ´Â ½ºÅ©¸³À» ÀÛ¼ºÇÒ¶§ ÁÖÀÇ
ÇÏÁö ¾ÊÀ¸¸é ¾ÈµÇ´Â Á¡ÀÌ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î Æû¿¡¼ ¹Þ¾Æ µéÀÎ °ªÀÇ
ÀϺΰ¡ systemµî¿¡ ¿ÜºÎ ÇÁ·Î±×·¥ÀÇ ÀμöÀÇ ÀϺηΠ°Ç³×ÁÙ °æ¿ì °£´ÜÈ÷
ÀÓÀÇÀÇ ¸í·É (rm À̳ª cat /etc/passwd µîÀÇ À§ÇèÇÑ Äڸǵå)¸¦ ¹ßÇàÇÏ¿©
½ÇÇà ½Ãų ¼ö°¡ ÀÖ½À´Ï´Ù.
¿¹¸¦ µé¾î $fFilename ¶ó´Â º¯¼öÀÇ Æû¿¡¼ °Ç³×ÁØ °ªÀ̶ó°í ÇÏ°í
1: $str = system("/bin/ls /tmp/$fFilename");
¶ó´Â ½ºÅ©¸³ÀÌ ½ÇÇà µÇ¾úÀ» °æ¿ì $fFilename ¿¡ [; /bin/rm -rf /] ¶ó°í
±â¼úÇÏ¸é ½©¿¡ ´ëÇÏ¿© [/bin/ls /tmp/; /bin/rm -rf /]¶ó´Â ¸í·ÉÀ» °Ç³×
ÁÝ´Ï´Ù. [;]´Â ÄÚ¸Çµå ±¸ºÐÀÚ·Î ÀνÄÀÌ µÇ¾î ls µµ rm µµ ½ÇÇàÀÌ µÇ´Â
°ÍÀÔ´Ï´Ù.
ÀÌ·± ¹®Á¦Á¡À» ¹æÁöÇϱâÀ§ÇØ escapeshellcmd ¶ó´Â ÇÔ¼ö°¡ Áغñ µÇ¾î
ÀÖ½À´Ï´Ù. [;]¸¦ Æ÷ÇÔÇÑ ½©¿¡ ´ëÇÏ¿© Ưº°ÇÑ Àǹ̸¦ °¡Áø ¹®ÀÚ¸¦
¿¡½ºÄÉÀÌÇÁÇؼ Ãâ·Â ÇØÁÝ´Ï´Ù.
ÀÌÇÔ¼ö¸¦ »ç¿ëÇÏ¿©
1: $fFilename = escapeshellcmd($fFilename);
2: $str = system("/bin/ls /tmp/$fFilename");
¿Í°°ÀÌ ÇØÁÖ¸é ¸ÕÀú ÇÁ·Î±×·¥Àº (´Ù¼Ò) ¾ÈÀüÇØÁý´Ï´Ù.
½Ã°£ÀÌ °É¸®´Â ÇÁ·Î±×·¥À» ¹é±×¶ó¿îµå¿¡¼ ½ÇÇà
½Ã°£ÀÌ °É¸®´Â ó¸®(´ë·® ¸ÞÀÏ ¼Û½ÅÀ̳ª µ¥ÀÌÅÍ º£À̽º Àüü »èÁ¦µî)¸¦
ºê¶ó¿ìÀú¿¡¼ ½ÇÇâÇÏ°í ½ÍÀ» ¶§³ª Çʿ伺ÀÌ ÀÖÀ» °Ì´Ï´Ù. ±×·² °æ¿ì¿¡
ÀϹÝÀûÀÎ ¹æ¹ýÀ¸·Î ó¸®Çϸé ÀÌ Ã³¸®°¡ Á¾·áµÉ ¶§±îÁö À¯Àú°¡ ºê¶ó¿ìÀú¸¦
»ç¿ëÇÒ ¼ö ¾ø°Ô µË´Ï´Ù(IE ÀÇ Áö±¸¸¶Å©°¡ °è¼Ó µ¹¾Æ°¡´Â »óÅÂ).
ÀÌ ¶§¿¡´Â À¯Àú°¡ ºê¶ó¿ìÀú¿¡ ´ëÇÏ¿© ¾î¶² Á¶ÀÛÀ» ÇÏ¿´À» °æ¿ìÀÇ ÀÛµ¿¿¡
´ëÇؼ º¸ÀåÀÌ µÇÁö ¾Ê½À´Ï´Ù. ¶Ç, ÀÏÁ¤ÇÑ ½Ã°£ÀÌ °æ°úÇϸé Á¢¼Ó(·±)
ŸÀӾƿôÀÌ µÇ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù.
ÀÌ·¯ÇÑ »óŸ¦ ÇÇÇϱâ À§ÇØ ºê¶ó¿ìÀú¸¦ ¹Ù·Î Ç®¾îÁÖ°í ½Ã°£ÀÌ °É¸®´Â
󸮴 ¹é±×¶ó¿îµå¿¡¼ ó¸®(µÞ±¸¸Û¿¡¼ È£¹Ú¾¾±î±â »óÅÂ)ÇØÁÖ´Â ¹æ¹ýÀÌ
ÇÊ¿äÇÏ°Ô µË´Ï´Ù. ÁÖ·Î ´ë·® ¸ÞÀÏÀ» ¼Û½ÅÇÏ´Â °æ¿ì¿¡ ¸¹ÀÌ »ç¿ëµÇ¸®¶ó°í
»ý°¢µË´Ï´Ù.
Perl ¿¡¼´Â fork ÇÔ¼ö¸¦ »ç¿ëÇؼ °°Àº ÇÁ·Î±×·¥¾È¿¡ ¹é±×¶ó¿îµå¿¡¼
ó¸®ÇÒ ºÎºÐÀ» ±â¼úÇÒ ¼ö ÀÖÁö¸¸ PHP ÀÇ °æ¿ì¿¡´Â fork ÇÔ¼ö°¡ ¾øÀ¸¹Ç·Î
¹é±×¶ó¿îµåó¸®ÇÏ°Ô ÇÒ¶§ ¸ÕÀú º°µµÀÇ ÇÁ·Î±×·¥À» ¸¸µé¾î ³õ°í, system
ÇÔ¼ö ȤÀº exec ÇÔ¼ö¸¦ ºÒ·¯³»´Â Çü½ÄÀÌ µË´Ï´Ù. ´ç¿¬ÇÑ À̾߱â ÀÌÁö¸¸
¹é±×¶ó¿îµå¿¡¼ ó¸®µÈ °á°ú¸¦ ¾ò´Â °ÍÀº ºÒ°¡´ÉÇÕ´Ï´Ù(¸ÞÀΠ󸮴Â
¹é±×¶ó¿îµå ó¸® Àü¿¡ ¸ÕÀú Á¾·á µÇ¾ú±â ¶§¹®¿¡). ±×·¡¼ °á°úÀûÀ¸·Î
exec ¸¦ »ç¿ëÇصµ system À» »ç¿ëÇصµ ¶È °°Àº °á°ú°¡ µË´Ï´Ù.
system ÇÔ¼ö³ª exec ÇÔ¼öÀÇ ¸®ÆÛ·±½º¸¦ º¸¸é ´ÙÀ½°ú °°Àº ³»¿ëÀÌ ÀÖ½À´Ï´Ù.
(ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ÇÁ·Î±×·¥½ÇÇàÀ» Çؼ ¹é±×¶ó¿îµå¿¡¼ ½ÇÇàÇÑ »óÅ·Î
µÎ°í ½ÍÀ» ¶§¿¡´Â ÇÁ·Î±×·¥ÀÇ Ãâ·ÂÀ» ÆÄÀÏ È¤Àº ´Ù¸¥ Ãâ·Â ½ºÆ®¸²¿¡
¸®´ÙÀÌ·ºÆ®ÇØÁÙ ÇÊ¿ä°¡ ÀÖ´Â Á¡¿¡µµ ÃßÀÇÇØ¾ß µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é
PHP´Â ±× ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀÌ Á¾·áµÉ ¶§±îÁö Ç®¾îÁÖÁö ¾Ê°í ºÙµé°í ÀÖÀ»
°ÍÀÔ´Ï´Ù(Hang).)
ÀÌ ¹®ÀåÀÇ Àǹ̴ ´ÙÀ½°ú °°ÀÌ ±â¼úÇ϶ó´Â ÀǹÌÀÔ´Ï´Ù.
system("/home/your/bgprog $arg1 $arg2 > /dev/null &");
¿©±â¿¡¼ bgprog Àº ¹é±×¶ó¿îµå¿¡¼ ½ÇÇàÇÏ°íÀÚ ÇÏ´Â ÇÁ·Î±×·¥ÀÔ´Ï´Ù.
¾î¶² ¾ð¾î·Î ±â¼úµÇ¾îµµ »ó°üÀÌ ¾ø½À´Ï´Ù. ȤÀº À§ÀÇ ¿¹¿Í °°ÀÌ ¸ÞÀÎ
󸮿¡¼ Àμö¸¦ °Ç³× ÁÖ°í ½ÍÀº °æ¿ì¿¡´Â bgprog ÂÊ¿¡¼ Á¤È®ÇÏ°Ô ¹Þ¾Æ
ó¸®ÇÒ ¼ö ÀÖµµ·Ï ÇØÁÖÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.
[> /dev/null] °¡ [¸®´ÙÀÌ·ºÆ®] ¿¡ ÇØ´çÇÏ´Â ±â¼úÀÔ´Ï´Ù. /dev/null
¶ó°í ÇÏ´Â °ÍÀº [¾²·¹±âÅë] À¸·Î »ý°¢ÇÏ¸é µË´Ï´Ù. ¸ðµç Ãâ·Â°á°ú¸¦
¹ö¸³´Ï´Ù. ¸¶Áö¸·ÀÇ & ´Â ¹é±×¶ó¿îµå¿¡¼ ½ÇÇàÀ» Ç϶ó´Â ÀǹÌÀÔ´Ï´Ù.
ÀÌ ÁÖº¯ÀÇ ÀÚ¼¼ÇÑ ³»¿ëÀº UNIX ½© °ü·Ã Âü°í¼¸¦ º¸¸é ÀÖ½À´Ï´Ù.
[PHP´Â ±× ÇÁ·Î±×·¥ÀÌ Á¾·á µÉ¶§±îÁö HangµË´Ï´Ù] ¶ó´Â Àǹ̴ IE ÀÇ
Áö±¸ ¸¶Å©°¡ °Ô¼Ó µ¹°í ÀÖ´Â »óŸ¦ ÀǹÌÇÕ´Ï´Ù.
±×·³ ½ÇÇèÀ» Çغ¸°Ú½À´Ï´Ù. ºê¶ó¿ìÀúÀÇ »óÅ¿¡ ÁÖÀÇÇؼ º¾½Ã´Ù.
bgprog ¿¡ ÇØ´çÇÏ´Â ÇÁ·Î±×·¥À» ´ÙÀ½°ú °°Àº ³»¿ëÀ¸·Î ¸¸µé¾î º¸°Ú½À´Ï´Ù.
°£´ÜÈ÷ ¼ö¸éÁ¦ ¸è¿©¼ 10 Ãʵ¿¾È ÀáÀç¿ì´Â ÇÁ·Î±×·¥ÀÔ´Ï´Ù.
¿©±â¿¡¼´Â ½©½ºÅ©¸³À¸·Î ¸¸µé°Ú½À´Ï´Ù.
sleep.sh
sleep 10
´ÙÀ½Àº À§ÀÇ ÇÁ·Î±×·¥À» ºÒ·¯³¾ PHP ½ºÅ©¸³À» ¸¸µé°Ú½À´Ï´Ù.
<?
system("/bin/sh /home/your/sleep.sh > /dev/null &");
echo "OK.";
?>
À§ÀÇ ÆäÀÌÁö¸¦ Ãâ·ÂÇÏ¸é ¼ø°£ÀûÀ¸·Î OK °¡ Ãâ·ÂÀÌ µË´Ï´Ù.
10ÃÊ À̳»¿¡ ps Äڸǵ带 È®ÀÎÇϸé OK°¡ Ãâ·ÂÀÌ µÈÈÄ¿¡µµ
sleep.sh °¡ ½ÇÇàÀÌ µÇ°í ÀÖ´Â »óÅ°¡ µË´Ï´Ù.
±×·³ ¾Æ·¡¿Í °°ÀÌ ÀϹÝÀûÀÎ ¹æ¹ýÀ¸·Î º¯°æÇÏ¸é ¾î¶»°Ô µÉ±î¿ä?
<?
system("/bin/sh /home/your/sleep.sh &");
echo "OK.";
?>
10ÃÊ°¡ Áö³ ÈÄ¿¡ OK°¡ Ãâ·ÂÀÌ µÉ °ÍÀÔ´Ï´Ù.
±× µ¿¾È¿¡ ºê¶ó¿ìÀú´Â ¸ñºüÁö°Ô ó¸® °á°ú¸¦ ±â´Ù¸®°í ÀÖ´Â
»óÅ·ΠÀÖ´Ù´Â °ÍÀ» È®ÀÎ ÇÒ ¼ö ÀÖÀ» °Ì´Ï´Ù.
|
|
Page Loading [ 0.07 Sec ]
SQL Time [ 0.04 Sec ]
|
|
|