Старый 27.03.2018, 16:05   #1
blackvoid
 
Регистрация: 25.10.2016
Сообщений: 3
Репутация: 0
По умолчанию php/mysql challenge

возникла потребность каким-то образом усекать длину строки из user input.
в наличии mysql, charset utf8mb4, поле longtext.
user input попадает в update/insert. самой собой, эскейпится и все такое. sqli исключен. нужно каким-то образом сделать так, чтобы по итогу выполнения запроса

Код:
update table1 set column = 'aaaa-userinput-bbbb' where id = 013
column в базе приобретал значение aaaa или bbbb. что угодно, кроме aaaa-userinput-bbbb. или хотя бы добиться того, чтобы strlen(user-input) не был равен итоговому strlen(column)
спасибище заранее, камраден.
blackvoid вне форума   Ответить с цитированием
Старый 03.04.2018, 17:02   #2
HeartLESS
 
Регистрация: 25.04.2012
Сообщений: 101
Репутация: 31
По умолчанию

через триггеры как-то пытаться.
создать функцию, которая будет исправлять твоё значение и триггер на before insert
__________________
Jokester: Ок, с тобой проще согласиться чем переубедить. :)
HeartLESS вне форума   Ответить с цитированием
Старый 05.04.2018, 01:55   #3
Beched
 
Регистрация: 06.07.2010
Сообщений: 395
Репутация: 118
По умолчанию

Цитата:
Сообщение от HeartLESS Посмотреть сообщение
через триггеры как-то пытаться.
создать функцию, которая будет исправлять твоё значение и триггер на before insert
Он же про блекбокс-атаку, а не разработку.

По сабжу -- надо фаззить, поскольку с utfmb4 не канают простые атаки через кусок какашки или некорректный утф символ.
Beched вне форума   Ответить с цитированием
Старый 05.04.2018, 02:03   #4
Beched
 
Регистрация: 06.07.2010
Сообщений: 395
Репутация: 118
По умолчанию

Базовая проверка такая:
Код:
create table test_utf (a varchar(256) character set utfmb4 collate utf8mb4_unicode_ci);
Затем как угодно генерим данные и заполняем:
Код:
>>> print '\n'.join("insert into test_utf values (concat('aaaa-',char(%i),'-bbbb'));"%i for i in xrange(256))
Итог:
Код:
MariaDB [test]> select * from test_utf where length(a)!=11;
Empty set (0.00 sec)
Т.е. вставилось всё корректно. Но это 1 байт, нужно проверять на мультибайтовых последовательностях.
Beched вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot