PHP mail 可能導致的問題

2021-09-20 00:09:43 字數 2892 閱讀 6944

參考文獻:

題目**:

環境:

php version < 5.2.0

phpmailer < 5.2.18

php 沒有安裝 pcre(no default)

safe_mode = false(default)

題目
class mailer 

return escapeshellarg($email);

}public function send($data) else

if (!isset($data['from'])) else

if (!isset($data['subject']))

if (!isset($data['message']))

mail($data['to'], $data['subject'], $data['message'],

'', "-f" . $data['from']);

}}$mailer = new mailer();

$mailer->send($_post);

①mail()函式

整體來看此題目是傳送郵件的,先看下mail()函式的用法

mail(to,subject,message,headers,parameters)

to 必需。規定郵件的接收者。

subject 必需。規定郵件的主題。該引數不能包含任何換行字元。

message 必需。規定要傳送的訊息。

headers 必需。規定額外的報頭,比如 from, cc 以及 bcc。

parameters 必需。規定 sendmail 程式的額外引數。

②filter_var()函式

filter_var($email, filter_validate_email)//郵件過濾器,確保在第5個引數中僅使用有效的電子郵件位址mail()

filter_var(variable, filter, options)函式通過指定的過濾器過濾變數。如果成功,則返回已過濾的資料,如果失敗,則返回 false

variable 必需。規定要過濾的變數。

filter 可選。規定要使用的過濾器的 id。

options 規定包含標誌/選項的陣列。檢查每個過濾器可能的標誌和選項。

此函式在雙引號中巢狀轉義空格仍然能夠通過檢測。同時由於底層正規表示式的原因,通過重疊單引號和雙引號,欺騙filter_var(),這樣就可以繞過檢測。

乙個簡單的例子:

③escapeshellcmd()函式

引入的特殊符號,雖然繞過了filter_var()的檢測,但php的mail()在底層呼叫了escapeshellcmd(),對使用者輸入的郵箱位址進行檢測,即使存在特殊符號,也會被escapeshellcmd()處理轉義,這樣就沒辦法達到命令執行的目的了。

但還呼叫了escapeshellarg()//把字串轉碼為可以在 shell 命令裡使用的引數,此函式將給字串增加乙個單引號並且能引用或者轉碼任何已經存在的單引號,確保能夠直接將乙個字串傳入 shell 函式(含exec(),system(),反引號)

乙個例子

<?php 

$a="127.0.0.1' -v -d a=1";

$b=escapeshellarg($a);

$c=escapeshellcmd($b);

$cmd="curl ".$c;

var_dump($b)."\n";

var_dump($c)."\n";

var_dump($cmd)."\n";

system($cmd);

?>

根據此漏洞有兩個例項:

cve-2016-10033

payload:

a( -oqueuedirectory=/tmp -x/var/www/html/x.php )@a.com

然後通過 linux 自身的 sendmail 寫log的方式,把log寫到web根目錄下。將日誌檔案字尾定義為 .php ,即可成功寫入webshell。

cve-2016-10045

payload:

a'( -oqueuedirectory=/tmp -x/var/www/html/x.php )@a.com

for each可能導致的資料丟失

除錯了一下午的begug,太坑爹了。多虧了gdb。如果乙個類裡面的有儲存資料,還過載 操作符做為仿函式,過載的函式向類裡存資料。這樣類似for each a.begin a.end stor 因為for each中stor是值傳遞,會導致先呼叫copy建構函式,這樣資料就被儲存在了新構造的類裡,並沒...

CSDN 微軟雅黑可能導致的部落格侵權問題

從以上兩篇部落格的內容來看,理論上非商用不會導致侵權,但是這裡有個問題是不能間接商用 比如我之前寫部落格,效果如下 這樣來寫可能有風險,原因如下 font family 微軟雅黑 這裡用的都是客戶端字型,已經得到微軟授權。font face是乙個錯誤的選擇,這表示你引用了乙個字型檔案,但是這並不是 ...

創新也可能導致平庸

以前考托福時,新東方的老師給我們講外國人 不好好回答問題 的思維,例如,當女生問男生 你愛我嗎?他會回答 冰是冷的嗎?這時我們的選項就應該選擇yes,因為這種回答表明男生是愛這個女生的。小的時候,經歷過乙個很經典的案例 老師在問我們雪化了變成什麼時?我們這群 好 孩子都一致回答 水 只有我的乙個非常...