exec
(PHP 4, PHP 5, PHP 7, PHP 8)
exec β ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²Π½Π΅ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
Π‘ΠΏΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²
command
-
ΠΠΎΠΌΠ°Π½Π΄Π°, ΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΡ.
output
-
Π€ΡΠ½ΠΊΡΠΈΡ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΠΎΠΊΠ°ΠΌΠΈ Π²ΡΠ²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ,
Π΅ΡΠ»ΠΈ Π² ΡΠΏΠΈΡΠΊΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° output.
Π€ΡΠ½ΠΊΡΠΈΡ Π½Π΅ Π²ΠΊΠ»ΡΡΠΈΡ Π² ΠΌΠ°ΡΡΠΈΠ² ΠΏΡΠΎΠ±Π΅Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ \n, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π²Π΅ΡΡΠ°ΡΡ ΡΡΡΠΎΠΊΠΈ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΡΡΠ½ΠΊΡΠΈΡ exec() Π΄ΠΎΠ±Π°Π²ΠΈΡ Π½ΠΎΠ²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΠΊΠΎΠ½Π΅Ρ ΠΌΠ°ΡΡΠΈΠ²Π°,
Π΅ΡΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² ΡΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ.
ΠΠ΅ΡΠ΅Π΄ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΡΠ½ΠΊΡΠΈΡ exec() Π½Π° ΠΌΠ°ΡΡΠΈΠ²Π΅ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠ·ΡΠΊΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ
unset(), Π΅ΡΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΠΊΠΎΠ½Π΅Ρ ΠΌΠ°ΡΡΠΈΠ²Π° Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ.
result_code
-
Π€ΡΠ½ΠΊΡΠΈΡ Π·Π°ΠΏΠΈΡΠ΅Ρ Π² ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ°ΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»Π° ΡΠΈΡΡΠ΅ΠΌΠ°,
Π΅ΡΠ»ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ ΠΈ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ result_code,
ΠΈ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ output.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ ΠΈΠ· ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
Π€ΡΠ½ΠΊΡΠΈΡ passthru() ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ
Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ Π²Π΅ΡΠ½ΡΡΡ ΡΡΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Ρ
Π±Π΅Π· ΠΏΠΎΡΡΠ΅Π΄Π½ΠΈΠΊΠΎΠ².
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ false, Π΅ΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°.
Π€ΡΠ½ΠΊΡΠΈΡ Π²Π΅ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π²ΡΠ²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»Π°ΡΡ, ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ output.
ΠΡΠΈΠ±ΠΊΠΈ
ΠΡΠ΄Π°ΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ° ΡΡΠΎΠ²Π½Ρ E_WARNING,
Π΅ΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ exec() Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ command.
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ValueError,
Π΅ΡΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ command Π½Π΅ ΡΠΊΠ°Π·Π°Π»ΠΈ ΠΈΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½ΡΠ»Π΅Π²ΡΠ΅ Π±Π°ΠΉΡΡ.
Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
ΠΡΠΈΠΌΠ΅ΡΡ
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΡΠΈΠΌΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ exec()
<?php
// ΠΡΠ²ΠΎΠ΄ΠΈΡ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΡΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ php/httpd
// (ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ whoami Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌ ΠΏΡΡΠΈ)
$output = null;
$retval = null;
exec('whoami', $output, $retval);
echo "ΠΠΎΠΌΠ°Π½Π΄Π° Π²Π΅ΡΠ½ΡΡ ΡΡΠ°ΡΡΡ $retval ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅:\n";
print_r($output);
?>
ΠΡΠ²ΠΎΠ΄ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡ
ΠΎΠΆ Π½Π°:
ΠΠΎΠΌΠ°Π½Π΄Π° Π²Π΅ΡΠ½ΡΡ ΡΡΠ°ΡΡΡ 0 ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅:
Array
(
[0] => cmb
)
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ
ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅
ΠΠΎΠΌΠ°Π½Π΄Ρ ΡΠΊΡΠ°Π½ΠΈΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ escapeshellcmd(), Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ escapeshellarg(),
ΠΊΠΎΠ³Π΄Π° ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅,
ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΎΠ±ΠΌΠ°Π½ΠΎΠΌ Π½Π΅ Π·Π°ΡΡΠ°Π²ΠΈΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ
Π²ΡΠ²ΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡ Π² ΡΠ°ΠΉΠ» ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π²ΡΠ²ΠΎΠ΄Π°,
ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»Π° ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅.
PHP Π·Π°Π²ΠΈΡΠ½Π΅Ρ Π΄ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π΅ΡΠ»ΠΈ Π½Π΅ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²ΠΈΡΡ Π²ΡΠ²ΠΎΠ΄.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π Windows
ΡΡΠ½ΠΊΡΠΈΡ exec() Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ cmd.exe, ΡΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΠ½Π΅ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±Π΅Π· Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ cmd.exe Π·Π°ΠΏΡΡΠΊΠ°ΡΡ
Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΡ proc_open() Ρ ΠΎΠΏΡΠΈΠ΅ΠΉ
bypass_shell.
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅
- system() - ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²Π½Π΅ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ Π²ΡΠ²ΠΎΠ΄
- passthru() - ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²Π½Π΅ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ Π²ΡΠ²ΠΎΠ΄
- escapeshellcmd() - ΠΠΊΡΠ°Π½ΠΈΡΡΠ΅Ρ ΠΌΠ΅ΡΠ°ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ
- pcntl_exec() - ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°
- ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ