一文打尽PHP代码加密方式

31 篇文章 1 订阅
订阅专栏

原文地址

温馨提示:世界上没有破不了的密码,如果有那也只是时间问题。

我们能做的只是增加破解时间。如果这个破解时间大于一个人的寿命,那么这个加密方式肯定是成功的。

对于加密的程序,就像破解者需要了解、猜测编写者的思路一样,编写者也需要去了解破解者的方法、手段。这样才能写出破解难度更高的程序。

壳”加密”

这一类“加密”包括:

  1. 无扩展加密:phpjiami、zhaoyuanma的免费版本等
  2. 有扩展的加密:php-beastphp_screwscrew_plusZoeeyGuardtonyenc等市面上几乎所有的开源PHP加密扩展。

把它们称为“加密”算是抬举,它们真的真的只能被称为“自解压压缩包”,像是PHP界的WinRAR,或者是UPX、ASPack。笔者写到这里时暂时停顿了一下,笔者认为把这种“加密”和UPX这些壳相提并论是对UPX的侮辱。因为任何一个较为熟悉PHP的人,都可以在一天之内写出这种级别的加密,而不需要任何额外的知识。

这一类自解压压缩包的共同思路是:

  1. 加密:直接加密整个PHP文件,不对原始PHP逻辑作出改动。无扩展的加密将给用户一个运行时环境(“壳”)和加密后的数据,有扩展的加密将直接获得加密后的数据,并要求用户在使用时安装对应的扩展。
  2. 解密:壳或扩展先确认环境有没有被调试的风险,倘若没有,就直接在内存中解密出整个PHP文件,并使用eval或类似方式直接运行。

以下是笔者写的一个简化的代码示例:

<?php
  $code = file_get_contents('待加密的PHP');
  $code = base64_encode(openssl_encrypt($code, 'aes-128-cbc', '密钥', false, 'IV'));
  echo "<?php eval(openssl_decrypt(base64_decode($code), 'aes-128-cbc', '密钥', false, 'IV'));";

相信读到这里的各位都能意识到,对这一类“壳加密”来说,是有万能的“解密”方案的。不需要知道数据的加密算法到底是什么,因为真实代码在执行时总会被解密出来,各位只需要知道PHP到底执行了什么,从这儿拿出代码。

不管是evalassertpreg_replace('//e'),还是这类PHP加密扩展,想要动态执行代码就必须经过zend_compile_string这一个函数。只需要编写一个dll/so,给zend_compile_string挂上“钩子”,就能直接拿到完整的代码。笔者觉得详细讲这种加密是浪费本文空间,给出几篇文章作为参考:

https://www.leavesongs.com/PENETRATION/unobfuscated-phpjiami.html
http://blog.evalbug.com/2017/09/21/phpdecode_01/

也有一些网站可以在线解密,例如国外的UnPHP:https://www.unphp.net/

而如果你不会C,或者不想从PHP底层来破解,也有不少的伸手党策略,像是这篇针对phpjiami / zym的破解方案 https://www.52pojie.cn/thread-693641-1-1.html,可从中了解这些壳的基本运行方式。

有扩展加密中,php_screw因加密方式太弱,容易被已知明文攻击(举例:大部分PHP文件的开头均为<?php)推测出密钥。其他的加密就都需要手动逆向,过于麻烦,直接使用通用方案来反而是更简单的破解方式。

另外,还有一部分加密提供了一些附加功能。例如phpjiami提供的防SQL注入和访问控制功能。

在这里插入图片描述

如果真的相信SQL注入能靠这些“加密”来防御,那也未免too young too simple。这些防SQL注入没有任何用处,通过关键字过滤反而容易拦截正常的用户输入。相信它们,还不如在网站前面加一层360网站卫士、百度云加速。正确的防SQL注入的方式应当是在用户输入处使用mysqli_real_escape_string,或者使用PDO的预处理查询,或者使用各类ORM框架。

混淆加密

这一类加密才刚刚上了加密的道。

在国内用的最多的是 EnPHP,开源的有 php-obfusactor。当然,还有一种更强大的开源加密 yakpro-po,笔者猜测,微擎的混淆算法就是基于这个来修改的。它们的基本原理是:

  1. 移除代码内的变量,将其替换为乱码或l1O0组合成的变量名。因为只改变变量名,大部分情况下并不会对代码的逻辑产生影响。
  2. 对PHP代码本身的明文字符串,像是变量名、函数名这些进行替换。
  3. 一定程度上改变代码原始逻辑。

这一类加密的开发门槛就相对高些了,需要熟悉对于抽象语法树(AST)的操作。

代码混淆对于一般的防破解来说强度是足够的,Google 在 Android 上即默认提供了 ProGuard 这一明文符号混淆工具,在PHP上同样,如果变量名、函数名等被混淆,确实可以增加破解难度,对应的工具是php-obfusactor。不过,这对一般的逆向造不成什么影响,批量替换变量名就可以解决了。EnPHPyakpro-po相对会麻烦一些。

EnPHP的特征是,将所有的函数名都提取到一个常量池,在一定程度上修改了变量名,不过不改变代码逻辑。

在这里插入图片描述

这种加密实现难度不高,只要熟悉对php-parser的操作即可写出来。笔者随手花了十分钟写了一个,分享给大家:

<?php
use PhpParser\Lexer;
use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\NodeTraverser;
use PhpParser\NodeVisitor\NameResolver;
use PhpParser\NodeVisitor\Abstract;
use PhpParser\Parser;
use PhpParser\ParserFactory;
use PhpParser\PrettyPrinter\Standard;

require './vendor/autoload.php';

class ObfuscateCode extends NodeVisitorAbstract
{
    public $mode = 0;
    private $_parser = null
    private $_variableName = '';
    private $_strings = [];
    private $_stringShuffledKeys = [];
    private $_ast;

    public function __construct($parser, $variableName)
    {
        $this->_parser = $parser;
        $this->_variableName = $variableName;
    }

    public static function initialize()
    {
        $parser = (new ParserFactory())->create(ParserFactory::PREFER_PHP7);
        $variableName = 'O0O0OO00';
        return new ObfuscateCode($parser, $variableName);
    }

    public function obfuscate(string $code)
    {
        $this->getFunctionNames($code);
        $this->shuffleStringKeys();
        $this->getObfuscatedAST($this->_ast);

        $keys = [];
        foreach ($this->_strings as $key => $value) {
            $keys[$value] = $key;
        }

        $prettyPrinter = new Standard();
        $text = $prettyPrinter->prettyPrint($this->_ast);
        $text = '$' . $this->_variableName . '=' . var_export($keys, true) . ';' . $text;
        return $text;
    }

    public function enterNode(Node $node)
    {
        return $node;
    }

    public function leaveNode(Node $node)
    {
        if ($node instanceof NodeExprFuncCall || $node instanceof NodeExprMethodCall) {
            if ($node->name instanceof NodeName) {
                if ($this->mode === 0) {
                    $name = $node->name->toString();
                    if (!isset($this->_strings[$name])) {
                        $this->_strings[$name] = 1;
                    }
                } else if ($this->mode === 1) {
                    $name = $node->name->toString();
                    if (isset($this->_strings[$name])) {
                        $node->name = new ExprArrayDimFetch(
                            new ExprVariable($this->_variableName),
                            NodeScalarLNumber::fromString($this->_strings[$name])
                        );
                    }
                }
            }
        }

        if ($node instanceof NodeScalarString_) {
            if ($this->mode === 0) {
                $name = $node->value;
                if (!isset($this->_strings[$name]) && strlen($name) > 1) {
                    $this->_strings[$name] = 1;
                }
            } else if ($this->mode === 1) {
                $name = $node->value;
                if (isset($this->_strings[$name])) {
                    return new ExprArrayDimFetch(
                        new ExprVariable($this->_variableName),
                        NodeScalarLNumber::fromString($this->_strings[$name])
                    );
                }
            }
        }

        return $node;
    }

    private function getFunctionNames(string $code)
    {
        $traverser = new NodeTraverser();
        $this->_ast = $this->_parser->parse('<?php ' . $code);
        $traverser->addVisitor(new NameResolver());
        $traverser->addVisitor($this);
        $traverser->traverse($this->_ast);
        return $this->_strings;
    }

    private function shuffleStringKeys()
    {
        $this->_stringShuffledKeys = array_keys($this->_strings);
        shuffle($this->_stringShuffledKeys);
        foreach ($this->_stringShuffledKeys as $key => $value) {
            $this->_strings[$value] = $key;
        }
    }

    private function getObfuscatedAST($ast)
    {
        $this->mode = 1;
        $traverser = new NodeTraverser();
        $traverser->addVisitor(new NameResolver());
        $traverser->addVisitor($this);
        $this->_ast = $traverser->traverse($ast);
    }
}


$a = ObfuscateCode::initialize();
echo $a->obfuscate('var_dump(base64_encode("123456"));echo "test";');

至于破解,反向操作即可。分享一个52pojie上的破解教程和一键破解脚本:

https://www.52pojie.cn/thread-883976-1-1.html

yakpro-po的特征是大量的goto混淆,如图所示。

在这里插入图片描述

这种混淆器的特点如下:

  1. 正常语句,将被混淆成labelxxx: one_line; goto nextlabel;。直接将这三条语句视为一个混淆节点即可。
  2. if / if else / if elseif else,处理差别不大,直接还原即可。
  3. 嵌套型 if 相对比较麻烦,因为没有嵌套 if 的概念,一切 if 均在最外层。简单的处理方案是,如果跳到的节点有 if 语法,重新递归解析这个节点。

关于该混淆器网络上没有开源的解混淆方案,因此笔者也贴不出链接。只是笔者认为对于混淆类加密,万变不离其宗,基本上只需要通过简单的AST操作即可还原其原始代码(变量名可能被破坏)。不过出于防君子不防小人的目的,这一类加密已经足够日常使用。

无扩展虚拟机加密

目前市面上无扩展的虚拟机加密只有两款,且收费均不菲:

  1. Discuz应用中心开发的魔方加密: https://www.mfenc.com
  2. Z-Blog团队开发的Z5加密: https://z5encrypt.com

这两款加密的共同特点是:它们都实现了一个PHP语言的编译器,将PHP转换为它们的内部代码;用户将收到一个解释器,解释器的作用是根据内部代码来执行对应的指令。这就像写C语言一样,编译器负责把C语言写的代码转换为机器码,这种机器码CPU可以直接执行。

这种加密方式,在Windows / Linux上已经很成熟了,代表作品是VMProtect。这种运行方式已经在理论上证明了反编译出源码是不可能的,相对来说也是无扩展加密中最安全的。安全的同时也需要付出一定的代价,它们的运行效率也是最低的。

尽管如此,它们也不是百分百安全。虽然不能反编译出源码,但是可以根据它们的执行逻辑转写出功能类似的代码。魔方加密仅有一层虚拟机,缺少调试对抗策略,导致现在已经有了比较成熟的一键反编译方案:

魔方一代加密破解:https://www.52pojie.cn/thread-695189-1-1.html

魔方二代加密破解:https://www.52pojie.cn/thread-770762-1-1.html

Z5加密的作者似乎在这之上改进了不少,笔者登陆其官网,发现其有如下功能:

  1. 增加垃圾代码、扁平化控制流、指令膨胀。
  2. 明文字符串加密、常量池。
  3. 虚拟机共享、反调试。

Z5加密的破解极为麻烦,笔者对PHP引擎进行了大量修改,包括zend_compile_stringzend_executemicrotimephp_sapi_name等一系列函数,花了几天时间才勉强读懂这款加密的执行逻辑。其官网声称让“破解的成本要远高于购买您的程序的成本”,笔者还是比较认同的。

近似加密

这其实不属于加密,而是利用PHP自身功能来达到类似加密的效果。PHP在5.5之后自带OPcache,而5.5之前有Zend Optimizer。而已经停止开发的Zend Guard、老版本ionCube和部分配置下的Swoole Compiler,即是基于这一些系统功能进行加密。

PHP通常在Zend引擎上运行,Zend引擎会先将PHP编译为OPcode,OPcache的原理就是缓存了这些OPcode避免下一次运行时仍然产生编译开销。当然,OPcache也是人类不可直接读的。按照PHP官网所说:

OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。

PHP 5.5.0 及后续版本中已经绑定了 OPcache 扩展。 对于 PHP 5.2,5.3 和 5.4 版本可以使用 » PECL 扩展中的 OPcache 库。

Zend Guard和部分情况下的Swoole Compiler的原理与之相同,即直接将OPcode塞入Zend引擎。

Zend Guard已经被Dezend等工具解密,开源解密工具见:https://github.com/Tools2/Zend-Decoder

对于PHP 5.5+的OPcache的读取和解析,可以参考这一篇文章的后半部分: https://blog.zsxsoft.com/post/36。他使用VLD扩展来解析OPcache。

扩展加密

笔者这里所说的扩展不是php-beastphp_screw这一类扩展,前文已经指出,它们根本不配被称之为“加密”。笔者认为,Swoole CompilerSG11、高版本ionCube这一类扩展才配被称之为加密。

Swoole Compiler团队的郭新华曾经分享了Swoole Compile的加密过程,可以搜索得到他们的PPT:https://myslide.cn/slides/9137?vertical=1。截至目前,似乎没有公开的Swoole Compiler的破解网站。笔者没有Swoole Compiler的样本,如果他们真的如PPT所述实现,那么可以说这是最强的有扩展加密。

根据PPT所述,他们的加密过程包括:

  1. 剔除注释、混淆局部变量。
  2. 编译优化、内联函数和指令、花指令。
  3. 增加垃圾代码、扁平化控制流。
  4. 明文字符串加密。
  5. 基于LLVM编译成LLVM Bytecode。

分发给用户的扩展还包括:

  1. 内置函数名替换(参考zhaoyuanma的破解:https://www.zhaoyuanma.com/article/48.html)。
  2. OPCode混淆,仅保留Handler。
  3. 反调试、防篡改、加壳。

SG11目前没有公开资料,解密的市场价大约200-300元/文件,笔者目前也没有SG11加密过的样本,只能简单分析SG11 Loader。笔者猜测可以从zend_execute内直接拿出所有的Bytecode来跳过OPCode解密流程。

在这里插入图片描述

之后找到每个OPCode执行的Handler,在这个Handler里应该包括二次解密的流程,再往下笔者就不再探究了。

在这里插入图片描述

文末

就目前而言,这些加密拥有足够的强度,值得推荐:

php-obfusactor :开源免费,混淆型免扩展加密,较类似Android上的ProGuard。

yakpro-po:开源免费,混淆型免扩展加密,打乱了程序的运行流程。

Z5加密:商业,虚拟机型免扩展加密,Z-Blog团队出品。

Swoole Compiler:商业,有扩展加密,Swoole官方出品。

最近又发现了一款加密工具:
Virbox Protector:商业

超强php源码混淆加密技术
weixin_45907966的博客
04-21 587
如果采用AB加密技术的网站,通过底层混淆、壳混淆、大量goto跳转和编码混淆等方法,再次混淆在一起,并使用各种复杂函数和加入各种反调试,使其代码难以被破解还原,被解密的概率大大降低,可用于授权、代码保护、保护敏感信息,提高代码的安全性等。高度安全性:采用底层混淆、壳混淆、大量goto跳转和编码混淆等方法,再次混淆在一起,使代码难以被破解还原,保护网站的数据和用户信息安全。安全漏洞:未加密PHP源码暴露了网站的代码逻辑和结构,黑客可以利用这些信息来发现网站的安全漏洞,进行恶意攻击。
php代码加密
03-22
php代码加密。 把需要加密的文件放入/test文件夹内 运行即可。加密后的文件会放在encoded/文件夹内 。
php源码加密
webnoties的专栏
12-09 1189
经过一段时间的学习,相信大家已经能编出一些像模像样的PHP程序了,但因为PHP是明码的脚本语言,如何保护自己的程序就提到了日程上来。记得我有个非常好的朋友曾经向我大倒苦水,原来他加了半个月的夜班,给别人开发了一套PHP程序,结果遇到了奸商,人家收了源代码说是先测试,然后就消失不见了,电话打不通,QQ也永远不在线了。   仔细想来,使用PHP开发的程序,都是源代码,辛辛苦苦写出来,任何人都可以拿去随
PHP代码加密
qq_18431263的博客
05-24 194
在线PHP加密独立平台已上线,平台包含多种加密,SG11-SG14 DECK GOTO 混淆加密等,有需要使用加密服务的请前往平台注册使用。平台上线,优惠多多,单个文件加密低至0.1一个。官网http://www.tkme.cn。
PHP代码加密代码
u011436748的博客
11-04 376
<?php function RandAbc($length = "") {//返回随机字符串 $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; return str_shuffle($str); } $filename = 'index.php';//输入需要加密PHP文件 $T_k1 = RandAbc();//随机密匙1 $T_k2 = RandAbc();//随机密匙2 $vstr = file_g
一文打尽嵌入式系统设计中常用总线和接口
01-20
任何一个微处理器都要与一定数量的部件和外围设备连接,但如果将各部件和每一种外围设备都分别用一组线路与CPU直接连接,那么连线将会错综复杂,甚至难以实现。为了简化硬件电路设计、简化系统结构,常用一组线路,...
一文读懂单片机之间的通信方式
01-19
对于莫一些场合,比如:复杂的后台运算及通信与高实时性前台控制系统、软件资源消耗大的系统、功能强大的低消耗系统、加密系统等等。如果合理使用多种不同类型的单片机组合设计,可以得到极高灵活性与性能价格比,...
一文读懂PHP使用RabbitMQ
12-13
RabbitMQ简介,RabbitMQ工作模型,RabbitMQ核心概念,RabbitMQ的四种交换机,RabbitMQ PHP的实现
一文说透低代码平台和无代码平台
03-27
一、低代码/无代码平台是什么 二、低代码/无代码平台是怎么产生的 三、低代码/无代码平台应具备哪些能力 四、主流的低代码/无代码平台有哪些 五、低代码/无代码平台典型应用场景 六、低代码/无代码平台有什么...
加密工具php代码加密工具
04-13
php代码加密工具,php代码加密工具,php代码加密工具,php代码加密工具,php代码加密工具,php代码加密工具,
php源码加密工具
04-08
NULL 博文链接:https://0001111.iteye.com/blog/1615540
CODELOCK v2.7 (PHP代码加密).rar
08-30
保护你的产品不需要在服务器端安装任何程序!全面的 PHP加密 代码保护解决方案! 每一个加密文件根据不同的Key产生完全不同的解密方法!让解密者成为无头苍蝇! 不再担心你的产品被别人恶意盗取!保护PHP、HTML和Javascript代码。 使用Codelock V2.0, 完整的保护的代码!支持IP控制、**控制!时间限制! Codelock V2 功能清单: 全面PHP加密保护,比传统的加密工具具有更高的可移植性 支持PHP4.x以上版本 在服务器上无需安装额外软件 支持Linux , Windows and FreeBSD 无需调整PHP设置 可工作与safe mo
php-encoder.zip PHP代码加密工具
01-05
国外获取的一个PHP代码加密工具,喜欢的拿去吧! php-encoder.zip PHP代码加密工具
一文打尽 Linux_Windows 端口复用实战 .pdf
09-05
一文打尽 Linux_Windows 端口复用实战 安全防御 网络安全 应急响应 威胁情报 安全架构
PHP代码加密/代码保护php-beast
pasas12001的博客
10-31 1243
Php代码加密/代码保护php-beast
PHP中的6种加密方式
T869634492的博客
10-24 1230
PHP中的6种加密方式 1. MD5加密 string md5 ( string $str [, bool $raw_output = false ] ) 参数 str -- 原始字符串。 raw_output -- 如果可选的 raw_output 被设置为 TRUE,那么 MD5 报文摘要将以16字节长度的原始二进制格式返回。 这是一种不可逆加密,执行如下的代...
PHP 代码加密实践
阅读之后,对你有帮助,那就点个赞再走吧
04-02 352
在我们开发的项目中,有一部分可能是用于商业用途,会部署在客户提供的机器环境中。因为 PHP 本身是解释型语言,所以未进行处理的代码,就会有泄露或被修改的风险。那么我们可能会想到最简单有效的方法就是进行加密混淆,然后配合一系列的校验,来保护我们的代码。那么本篇文章中,我们就采用了开源的 PHP 加密扩展 screw-plus 进行相关实践分析。 目前市场上有多种加密方案,但基本都是收费的。我们本次...
一文简述低代码到底是什么?
最新发布
07-28
代码是一种软件开发方法,旨在通过最小的手动编码,加快应用程序的开发速度和交付速度。它采用可视化的界面和组件库,使开发人员能够使用拖放、配置和少量自定义代码来创建应用程序。低代码平台提供了一种快速构建和部署应用程序的方式,减少了传统软件开发过程中的繁琐和复杂性。通过低代码开发,非专业开发人员也能够参与到应用程序的创建中,加快了业务创新和数字化转型的进程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • PHP中fileinfo的作用以及怎么开启fileinfo 20128
  • 启动Nginx、重启Nginx、停止Nginx与Nginx开机自启 18961
  • 二维码的原理以及怎么生成二维码 16173
  • MySQL索引系列:全文索引 13288
  • Nginx 中 location 块配置详解 10034

分类专栏

  • Linux 6篇
  • Nginx 12篇
  • MySQL 21篇
  • PHP 31篇
  • Redis 15篇
  • Elasticsearch 4篇
  • RabbitMQ 1篇
  • Go 3篇
  • Swoole 3篇
  • Docker 2篇
  • 数据结构 1篇
  • Web安全 2篇
  • 面向对象 1篇
  • 正则表达式 1篇
  • 网络协议 3篇
  • 程序人生 2篇
  • 版本控制工具 8篇
  • 读书笔记 3篇
  • JavaScript 1篇
  • 编程工具 5篇

最新评论

  • 调用第三方接口成功后,如果自己本身接口报错,如何实现事务回滚?

    纸飞机上的大熊: 先更新本地状态再去调第三方呗,这样只有本地状态更新成功后才会去调用第三方接口

  • 调用第三方接口成功后,如果自己本身接口报错,如何实现事务回滚?

    好男人hello world: 要是是第三方返回成功,但是本地退款失败,导致本地状态没更新成功怎么办呢

  • 使用企业微信群机器人实现生产告警

    i神雕: text的可以把文字加格式吗

  • 使用企业微信群机器人实现生产告警

    m0_73355324: 很详细学习了,这个rotdogmes.cn 功能多一些

  • Nginx 配置文件详解(一)

    北风toto: 这篇文章写得又好又全

大家在看

  • C#如何将目标格式转换为字符串

最新文章

  • Elasticsearch 常用的增加、删除、修改、查询语句
  • RabbitMQ 简介
  • 学习 Elasticsearch 一定要清楚的问题
2023年1篇
2022年2篇
2021年49篇
2020年57篇
2019年3篇
2018年11篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

聚圣源临安19楼论坛活期理财rpgviewer辛十四娘演员表物业公司起名的字扑克王剧情起名音调怎么搭配奇思妙想喜羊羊达州银行二哈的白猫师尊微博车截图猎人宠物技能美容养生商店起名土特产商标起名大全家纺起人名三国志12威力加强版下载天才枪手百度云给水排水制图标准白银期货走势西安严峻起名靠谱吗李阳疯狂英语演讲沈浪与苏若雪最新章节更新月子中心起名字u盘起什么名字比较好宝宝起名大师在线取名恒字起名字男玻利瓦尔葫芦兄弟mp4下载051驱逐舰凤凰卫视资讯台三农指的是哪三农淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化