Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
"опасные" функции и команды |

14.12.2006, 22:21
|
|
Постоянный
Регистрация: 17.09.2005
Сообщений: 375
Провел на форуме: 993362
Репутация:
175
|
|
"опасные" функции и команды
Собственно такой вопрос - может кто-ибудь из грамотных людей перечислить все функции php и perl которые могут выполнять произвольный код, команду и прочее. Задача заключается в том чтобы проверять код файла на потенциально возможный шелл. Знаю что есть функции типа cmd , exec , eval но их наверняка больше, и всех я просто не знаю.
|
|
|

14.12.2006, 22:38
|
|
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме: 8042357
Репутация:
3742
|
|
escapeshellarg - строка обрабатывается шеллом
escapeshellcmd - почти тоже самое )
exec - выполнение
passthru - аналогично
proc_open - выполняет комманду и открывает поинтэра файла для ввода-вывода
shell_exec - комманды через bash
system - опять же выполняет и выводит результат
include()
include_once()
require()
require_once()
инклуд файлов
__________________
Привет! Меня зовут Джордж, и я хотел бы рассказать вам про реинкарнацию (ц) 2x2
Последний раз редактировалось blackybr; 14.12.2006 в 22:48..
|
|
|

14.12.2006, 23:03
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
Лучше запретить еще eval и preg_replace, файл можно прочитать и выполнить через eval, что аналогично include'у
|
|
|

14.12.2006, 23:36
|
|
Постоянный
Регистрация: 17.09.2005
Сообщений: 375
Провел на форуме: 993362
Репутация:
175
|
|
угу, про eval я выше писал. А preg_replace разве может как-то использоваться злонамерно? Не знал.
Спасибо обоим!
|
|
|

14.12.2006, 23:45
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
PHP код:
$code = "phpinfo();";
preg_replace("#a#e", $code, "a");
выполнит код, содержащийся в $code
|
|
|

15.12.2006, 00:45
|
|
Пачка маргарина
Регистрация: 14.07.2005
Сообщений: 964
Провел на форуме: 4646474
Репутация:
1424
|
|
Сообщение от blackybr
proc_open - выполняет комманду и открывает поинтэра файла для ввода-вывода
ты имел ввиду popen наверно
http://phpclub.ru/manrus/f/popen.html
Последний раз редактировалось ShAnKaR; 15.12.2006 в 00:47..
|
|
|

15.12.2006, 02:10
|
|
Участник форума
Регистрация: 25.07.2005
Сообщений: 246
Провел на форуме: 457850
Репутация:
174
|
|
proc_open в отличие от popen открывает 2 хендлера - на чтение и на запись.
|
|
|

15.12.2006, 10:01
|
|
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме: 8042357
Репутация:
3742
|
|
ShAnKaR именно proc_open, т.е аналог stream_select() но также выполняющий любые комманды..
синтаксис вроде
proc_open ( цмд , дескрипторы строки , куча еще всего )
ну и popen в принципе тожно можно счиатать за "опасную ф-ю"
Код:
<?php
$hackdafack = popen("/bin/uname", "r");
?>
__________________
Привет! Меня зовут Джордж, и я хотел бы рассказать вам про реинкарнацию (ц) 2x2
|
|
|

15.12.2006, 11:05
|
|
Познавший АНТИЧАТ
Регистрация: 09.06.2006
Сообщений: 1,359
Провел на форуме: 5301021
Репутация:
1879
|
|
echo
Опасна лишь при таком использовании:
PHP код:
<?php echo('Дракула, Выйу, Ктулху - Power Rangers:), з0хват, мир, лазерный испепелитель, мегабластер, ,Интернет, Kосмос'); ?>
Последний раз редактировалось Dr.Check; 15.12.2006 в 11:11..
|
|
|

15.12.2006, 19:06
|
|
Постоянный
Регистрация: 06.06.2006
Сообщений: 515
Провел на форуме: 1985206
Репутация:
963
|
|
Perl:
open(FILE_DESCRIPTOR,FILE_NAME);
# при подставлении пайпа в имя файла - исполнит его
Пример уязвимого кода:
Код:
my($key,$value)=split('=',$ENV{QUERY_STRING});
if($key eq "param") { open(IN,$value)||die $! }
Подставляем в GET запрос index.cgi?param=|id|
и получаем текущий ид
eval(CODE);
# при подставлении ';CODE'в фильтрующуюся переменную которую задает клиент - исполнит код.
Пример уязвимого кода:
Код:
my($key,$value)=split('=',$ENV{QUERY_STRING});
if($key eq "param") { eval("print $value") }
подставляем в param '; system('id')' и снова полдучаем текущий ид
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|