Нашел вот такую ошибку... 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 - жаба для связи
По одной функции, точно сказать, есть ли в этом случае выполнение кода или нет, нельзя. Нужно видеть весь код, от начала и до конца. На мой взгляд, в тестах, есть попытка выдать желаемое за действительное. Вариантов, при которых можно (гипотетически) внедрить код, может быть куча и пробовать их все сравни эффекту как об стенку горох. Я на 99,9% уверен что там нет выполнения кода, но если очень хочется, могу предложить такие конструкции для теста: Code: <script language="php">sleep(100);</script> {math equation="x+y" x=5 y=4} {{3*3}} {PHP}sleep(100);{/PHP} <?php sleep(100); ?> <? sleep(100); ?> <% sleep(100); %> {${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);#\