Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   о перфекционизме и проститутках (https://forum.antichat.xyz/showthread.php?t=76751)

nc.STRIEM 11.07.2008 10:59

Цитата:

Сообщение от Helios
ага, а такая вот ссылка заставит твой винт пожужжать:
Код:

**.php??tel=8913-";system("rm - rf /"); print (">

ничего не произойдет. твой код не выйдет за приделы "

ShAnKaR 11.07.2008 18:11

Цитата:

Сообщение от Helios
ага, а такая вот ссылка заставит твой винт пожужжать:
Код:

**.php??tel=8913-";system("rm - rf /"); print (">

ты прав что это не безопастно, надо так:
PHP код:

preg_replace("#tel=(.*)></td>#e","print('$1\\n')",file_get_contents('http://www.sexnsk.com/index.php')); 

в кавычках фишка, всем видно думаю.

Helios 11.07.2008 18:56

Отнюдь не в кавычках тут дело. Строка, идущая вторым параметром, после подстановки туда значения из регекспа по сути передается как аргумент функции eval. Поэтому никакие кавычки тут не спасут. Выход куда проще: нужно просто подправить саму регулярку, чтобы ничего лишнего туда не попало:
Код:

было:
(.*)

стало:
([0-9\-]*)


Дикс 11.07.2008 19:28

ага.
может кто ещё подобный скриптец на форум подкинет?

ShAnKaR 11.07.2008 22:16

Цитата:

Сообщение от Helios
Отнюдь не в кавычках тут дело. Строка, идущая вторым параметром, после подстановки туда значения из регекспа по сути передается как аргумент функции eval. Поэтому никакие кавычки тут не спасут. Выход куда проще: нужно просто подправить саму регулярку, чтобы ничего лишнего туда не попало:
Код:

было:
(.*)

стало:
([0-9\-]*)


если не согласен - дай код который выполнится в моем последнем примере тогда. с одним phpinfo() чтоб проще было.
PS если кстати дашь реальный ответ то похекаем сразу кучи двигов ) с регулярками.

genom-- 11.07.2008 23:17

интересно зачем ему база с номерами проституток? 0_0

+toxa+ 11.07.2008 23:32

спам по смс ^^
тематический

5triker 11.07.2008 23:45

званить и апщаца имхо

Helios 12.07.2008 01:47

Кажется ты не совсем понял мою мысль. Смотрим в ман:
Цитата:

The e modifier makes preg_replace() treat the replacement parameter as PHP code after the appropriate references substitution is done.
Отсюда видим, что второй параметр выполняется как код после замены переменных. Отсюда следует, что никаким способом невозможно изменить второй параметр так, чтобы невозможен был инжект (вариант удалить замену в принципе - не рассматриваем=)).

А уже следуя из этого приходим к тому, что нужно следить за регулярным выражением, убирая лишнее еще там. Ну а предложенное тобой (.*) пропускает все что угодно.

Этим то и грешили многие движки, да и грешат до сих пор.
ЗЫ: и похекать мы сможем только единицы, т.к. девелоперы за регулярками обычно следят

Sharky 12.07.2008 01:55

Цитата:

Сообщение от D=P=CH= MOD=
Код:

http://forum.sexnsk.com/forumbackup-06.05.2008-ff546.sql
;)

жжошь ... лови плюсы =)


Время: 02:56