今天在学习一个ThinkPHP框架——sgcms时,发现一个文件被加密。
<?php
//
This file is protected by sgcms & provided under
license.
Copyright(C) 2007-2010 www.sgcms.cn, All rights
reserved.
$OOO0O0O00
=
__FILE__
;
$OOO000000
=urldecode(
'th6sbehqla4co_sadfpnr'
);
$OO00O0000
=21496;
$OOO0000O0
=
$OOO000000
{4}.
$OOO000000
{9}.
$OOO000000
{3}.
$OOO000000
{5};
$OOO0000O0
.=
$OOO000000
{2}.
$OOO000000
{10}.
$OOO000000
{13}.
$OOO000000
{16};
$OOO0000O0
.=
$OOO0000O0
{3}.
$OOO000000
{11}.
$OOO000000
{12}.
$OOO0000O0
{7}.
$OOO000000
{5};
$O0O0000O0
=
'OOO0000O0'
;
eval
(($
$O0O0000O0
('JE9PME9PMDAwMD0kT09PMDAwMDAwezE3fS4kT09PMDAwM...
很明显,是使用了某种PHP代码混淆工具混淆了下,Google网上搜了下,问题解决,给遇到同样问题的朋友一个方便。
解密php文件:
<?php
$filename
=
"GlobalAction.class.php"
;
//要解密的文件
$lines
=
file(
$filename
);
//0,1,2行
//第一次base64解密
$content
=
""
;
if
(preg_match(
"/O0O0000O0\('.*'\)/"
,
$lines
[1],
$y
))
{
$content
=
str_replace
(
"O0O0000O0('"
,
""
,
$y
[0]);
$content
=
str_replace
(
"')"
,
""
,
$content
);
$content
=
base64_decode
(
$content
);
}
//第一次base64解密后的内容中查找密钥
$decode_key
=
""
;
if
(preg_match(
"/\),'.*',/"
,
$content
,
$k
))
{
$decode_key
=
str_replace
(
"),'"
,
""
,
$k
[0]);
$decode_key
=
str_replace
(
"',"
,
""
,
$decode_key
);
}
//查找要截取字符串长度
$str_length
=
""
;
if
(preg_match(
"/,\d*\),/"
,
$content
,
$k
))
{
$str_length
=
str_replace
(
"),"
,
""
,
$k
[0]);
$str_length
=
str_replace
(
","
,
""
,
$str_length
);
}
//截取文件加密后的密文
$Secret
=
substr
(
$lines
[2],
$str_length
);
//echo $Secret;
//直接还原密文输出
echo
"<?php\n"
.
base64_decode
(
strtr
(
$Secret
,
$decode_key
,
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
)).
"?>"
;
?>
分享到:
相关推荐
PHP的`urlencode`和`urldecode`函数可以实现URL编码和解码。然而,加密后的数据可能会包含非ASCII字符,这时我们需要先对加密结果进行Base64编码,因为Base64编码后的结果只包含可打印的ASCII字符。PHP的`base64_...
2. URL编码与解码:在处理URL时,需要了解URL编码(如`urlencode()`和`urldecode()`函数)的概念,以确保URL中的特殊字符被正确处理。在加解密过程中,可能需要对URL进行编码和解码,以保证其在传输过程中的正确性和...
PHP在实现这个过程中,可能用到的函数有`urlencode()`和`urldecode()`进行URL编码和解码,以及可能的自定义加密算法。同时,为了保证安全性,开发者还需要注意对用户输入的URL进行验证和过滤,防止潜在的安全问题,...
1. **识别加密模式**:了解所使用的加密算法或混淆技术是至关重要的,这可能需要对PHP代码进行分析或查找相关的解密库。 2. **还原变量**:像代码片段中的 `$OOO0O0O00` 和 `$OOO000000` 这样的变量名,通常是混淆...
PHP语言属于超文本预处理器语言,该技术主要针对文件数据加密算法进行数据计算处理,所构建的是一套不可读的数字代码,它主用于保护数据不被外部人员非法窃取与阅读。因此,PHP语言属于典型的HTML内嵌式语言,在...
1. **URL编码与解码**:如何使用PHP内置的`urlencode()`和`urldecode()`函数进行URL的编码和解码。 2. **哈希算法**:可能使用了哈希算法(如MD5或SHA-1)来将长URL映射为短码,了解其工作原理和实现方式。 3. **...
这种验证可能涉及到加密算法、哈希计算等安全措施,确保数据在传输过程中不被篡改。 2. **PHP验证**: 在PHP中,验证通常涉及用户输入的检查,例如登录凭证、表单数据等。这可能包括验证用户名和密码的正确性、...
1. **URL编码与解码**:短网址程序需要处理URL的编码与解码,这涉及到PHP的`urlencode()`和`urldecode()`函数,以及可能的自定义编码算法。 2. **数据库操作**:存储和查找长URL与短URL之间的映射关系,可能使用了...
PHP文件可能通过各种编码方式加密或混淆,比如base64编码、URL编码、甚至更复杂的加密算法。解码过程就是将这些编码还原为原始的可读代码或数据。以下是一些关于PHP解码的关键知识点: 1. **Base64解码**:Base64是...
在PHP中,可以使用`urlencode()`和`urldecode()`函数来实现这一功能,确保URL的正确传输和显示。 3. **数据库连接与操作**:程序需要连接到云数据库,如MySQL、MongoDB或AWS RDS等,进行数据的读写操作。PHP提供了...
相对应地,`urldecode()`和`base64_decode()`函数则分别用于解码。 在给出的代码示例中,演示了如何通过一系列字符串操作和编码转换来隐藏原始数据或代码的真实意图。虽然这里的方式并不是传统意义上的加密算法,但...
- URL解码:PHP提供`urldecode()`函数,用于将URL编码的字符串转换回原始形式。 - 数据解析:可能需要用到`json_decode()`或`xml_parse()`等函数,根据链接中的数据格式进行解析。 - HTTP请求:`file_get_...
URL解码则使用urldecode()和rawurldecode()函数。 Base64编码是一种用于数据的编码方式,它将二进制数据转换为ASCII字符串。Base64编码后的字符串可以通过base64_encode()函数获得,并且可以直接在标签中作为图片...
解密过程则是逆向操作,首先用`urldecode`或`rawurldecode`还原编码后的字符串,然后再进行解码恢复原始的中文字符。 在`code`文件中,可能包含了实现这些加密/解密功能的PHP源代码。通过分析这些代码,我们可以更...
PHP可以通过htmlspecialchars函数来转义HTML特殊字符,或者使用htmlspecialchars_decode来解码已编码的字符串。另外,考虑使用HTTP头部Content-Security-Policy来限制可执行的脚本来源。 4. **CSRF(跨站请求伪造)...
11.4.2 解码字符串——urldecode 181 11.5 小结 182 第12章 PHP与JavaScript交互 183 12.1 JavaScript简介 183 12.2 JavaScript的数据类型 183 12.3 JavaScript程序设计基础 184 12.3.1 在HTML中嵌入JavaScript 184 ...
**Crypt**: 使用 DES 加密算法加密字符串。例如,`crypt('secret', 'salt')` 返回加密后的字符串。 **Strlen**: 返回字符串长度。例如,`strlen('hello')` 返回 `5`。 **Strtolower**: 将字符串中的所有字符转换为...
2. **URL编码**:当需要在URL中包含非ASCII字符时,通常会使用`urlencode()`和`urldecode()`函数进行编码和解码。这是因为URL中只能包含有限的字符集。 3. **HTML实体编码**:在显示用户提供的HTML内容时,为了避免...
这通常涉及创建数据库模型、编写入库脚本以及设计数据结构以存储IP、时间戳、页面访问路径等信息。 ### 6. 安全与隐私 在实施访客追踪时,必须遵守数据保护法规,尊重用户的隐私权。确保收集的数据最小化,不存储...
在这个例子中,我们注意到登录过程中涉及到了SHA1加密算法,即`sha1(sha1(sha1(pwd)).once.servertime)`。这意味着密码需要经过多次加密处理,使得直接登录变得复杂。 然而,在实际操作中,我们发现新浪登录接口...