Linux操作系统下由论坛到SSH的入侵
作者:沙雷 来源:安全中国 添加时间:2006-5-26 13:17:21好了,找关键的地方,最原先的用户,一般就是第一二个,找到了,是管理员权限,用户名为aaa,密码为4$@A%G,破解出了这个密码,按人的习惯,系统密码不是这个也不远了,至少会前进一大步。重新分析论坛代码,发现用以下的方法做的加密:
function t_encrypt($text, $key)
{
$crypt = "";
for($i=0;$i $i_key = ord(substr($key, $i, 1)); $i_text = ord(substr($text, $i, 1)); $n_key = ord(substr($key, $i+1, 1)); $i_crypt = $i_text + $i_key; $i_crypt = $i_crypt - $n_key; $crypt .= chr($i_crypt); } return $crypt; } 还有个key,key在哪呢?在db下的一个mishi.php里,打开内容如下: $key="jpjtvdomfmawwttsdhoxurmygjjtauefjuimueurisecggpymneslwowuqnzmmgmvjvccmeye uselymzoinxvqonmhjqjhljywixrdxboqdmmfidlhzrcoatnldlmwvinljayirwqcgazyvfrwvgbgroqfxiqruu rtkpogbkgdibeqejehfamujlqasitbizcxasobkl"; ?> 分析加密函数的算法:从密码第一位开始,取密码的一个字符,取key对应位的一个字符,转换成Ascii码相加,然后相加结果再减去key中下一位的Ascii,然后把最后结果再转换成字符即所谓密文存储。 Substr(string,i,j)函数的作用是将字符串string的第 i 位起取出 j 个字符。Ord()和chr()则分别是字符到Ascii和Ascii到字符的转换函数。简化一下上面算法就是:$i_crypt=$i_text+$i_key-$i+1_key。先拿第一位算吧,假设原密码第一位Ascii码为x,则: x+ascii(j)-ascii(p)=ascii(4) 用Ascii码算就是x+106-112=52