PHP危險函式的持續學習

2022-05-26 12:12:08 字數 678 閱讀 2305

先給出官方的定義:

escapeshellarg ( string $arg ) : string

將給字串增加乙個單引號並且能引用或者轉碼任何已經存在的單引號,這樣以確保能夠直接將乙個字串傳入 shell 函式,並且還是確保安全的。

對於使用者輸入的部分引數就應該使用這個函式。shell 函式包含 exec(), system() 執行運算子 。

該函式單獨使用的時候,是安全的,但是當與escapeshellcmd函式一起使用,且先使用escapeshellarg,再使用escapeshellcmd函式,就可能出現危險操作

escapeshellarg函式先將$arg變數裡的單引號進行轉義,變成 \',當所有單引號都被轉義之後,再在左右加上單引號('\''),再到escapeshellcmd函式的時候

scapeshellcmd會將$arg變數裡面的這些字元之前加了反斜槓(\):&#;`|*?~<>^(){}$\, \x0a 和 \xff。 ' 和 " 僅在不配對兒的時候被轉義。 在 windows 平台上,所有這些字元以及 % 和 ! 字元都會被空格代替。

通過這兩個函式,可以通過特殊的構造,來實現單引號的逃逸,進而shell函式,達到讀取資訊。

在buuctf平台上online tool這個web題裡面學習到的構造,變數首尾用單引號。具體可以看我buuctf復現2。

乾貨 PHP常見危險函式

功能描述 允許執行乙個外部程式並回顯輸出,類似於 exec 危險等級 高 功能描述 允許執行乙個外部程式 如 unix shell 或 cmd 命令等 危險等級 高 功能描述 如果按照預設值來,在程式的執行過程中呼叫assert 來進行判斷表示式,遇到false時程式也是會繼續執行的,跟eval 類...

PHP 危險函式全解析

在編譯 php 時,如無特殊需要,一定禁止編譯生成 cli 命令列模式的 php 解析支援。可在編譯時使用 disable cli。一旦編譯生成 cli 模式的php,則可能會被入侵者利用該程式建立乙個web shell 後門程序或通過php 執行任意 phpiwww.cppcns.comnfo 功...

PHP 危險函式解釋 分析

可在編譯時使用 disable cli。一旦編譯生成 cli 模式的 php,則可能會被入侵者 利用該程式建立乙個 weeywtdrygb shell 後門程序或通過 php 執行任意 phpinfo 功能描述 輸出 php 環境資訊以及相關的模組 web 環境等資訊。危險等級 中 passthru...