Отличный комментарий!
ага, а форма регистрации возвращает ошибку "вы не можете использовать запятые в пароле это ломает нам CSV с вами данными"
Так-то можно использовать любой тип разделителей. Например, \t
нахер запятые, задавай пароль "1'; DROP ALL TABLES; --"
Когда ты последний раз встречал ресурс где это сработало?
А когда ты последний раз встречал ресурс, где пароли в плейн тексте хранятся?
ты недооцениваешь тупость разработки некоторых ресурсов
Если кто-то так хранят пароли, то я окажу разработчику неоценимую услугу.
Научу экранировать ввод, и научу хранить хеши паролей.
Научу экранировать ввод, и научу хранить хеши паролей.
Не удивлюсь если реактор
надо делать такой пароль, чтобы его хеш получался каким-то инжектом
К сожалению.. даже мелкомягких на этом ловили.
Всего пару лет назад вроде был пост про то как парень подобное на номере машины написал и ломал бд камер дорожного движения
o_O
O_O
O_O
Всего пару лет назад ковид начался, а паста про дроп таблици лет 10 уже по интернету гуляет.
ну ок, теперь пусть набьет себе на номер
BEGIN
FOR cur_rec IN (SELECT object_name, object_type
FROM user_objects
WHERE object_type IN
('TABLE',
'VIEW',
'MATERIALIZED VIEW',
'PACKAGE',
'PROCEDURE',
'FUNCTION',
'SEQUENCE',
'SYNONYM',
'PACKAGE BODY'
))
LOOP
BEGIN
IF cur_rec.object_type = 'TABLE'
THEN
EXECUTE IMMEDIATE 'DROP '
|| cur_rec.object_type
|| ' "'
|| cur_rec.object_name
|| '" CASCADE CONSTRAINTS';
ELSE
EXECUTE IMMEDIATE 'DROP '
|| cur_rec.object_type
|| ' "'
|| cur_rec.object_name
|| '"';
END IF;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('FAILED: DROP '
|| cur_rec.object_type
|| ' "'
|| cur_rec.object_name
|| '"'
);
END;
END LOOP;
FOR cur_rec IN (SELECT *
FROM all_synonyms
WHERE table_owner IN (SELECT USER FROM dual))
LOOP
BEGIN
EXECUTE IMMEDIATE 'DROP PUBLIC SYNONYM ' || cur_rec.synonym_name;
END;
END LOOP;
END;
/
BEGIN
FOR cur_rec IN (SELECT object_name, object_type
FROM user_objects
WHERE object_type IN
('TABLE',
'VIEW',
'MATERIALIZED VIEW',
'PACKAGE',
'PROCEDURE',
'FUNCTION',
'SEQUENCE',
'SYNONYM',
'PACKAGE BODY'
))
LOOP
BEGIN
IF cur_rec.object_type = 'TABLE'
THEN
EXECUTE IMMEDIATE 'DROP '
|| cur_rec.object_type
|| ' "'
|| cur_rec.object_name
|| '" CASCADE CONSTRAINTS';
ELSE
EXECUTE IMMEDIATE 'DROP '
|| cur_rec.object_type
|| ' "'
|| cur_rec.object_name
|| '"';
END IF;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('FAILED: DROP '
|| cur_rec.object_type
|| ' "'
|| cur_rec.object_name
|| '"'
);
END;
END LOOP;
FOR cur_rec IN (SELECT *
FROM all_synonyms
WHERE table_owner IN (SELECT USER FROM dual))
LOOP
BEGIN
EXECUTE IMMEDIATE 'DROP PUBLIC SYNONYM ' || cur_rec.synonym_name;
END;
END LOOP;
END;
/
ах да и сделает это в иньекции
Тогда уж all_objects лучше использовать - мало ли какие права идиоты могли оставить пользователю.
Ты хотел сказать лет 10 назад?
Баян я видел точно меньше 10 лет назад, хотя возможно и до ковида
были еще ребята с номерами "NO PLATE", "MISSING" (в 1979ом году) и «XXXXXXX» (в 2000ом), которые получили обратный эффект
https://nashicanada.com/interesno/istoriya-o-tom-kak-kaliforniets-poluchil-2500-shtrafov-za-svoj-nomernoj-znak/
https://nashicanada.com/interesno/istoriya-o-tom-kak-kaliforniets-poluchil-2500-shtrafov-za-svoj-nomernoj-znak/
в какой субд работает "drop all tables" ?
Хм... вот бы был какой-то способ обойти это ограничение в CSV файлах... ну не знаю, например, двойные кавычки.
Если пароль хешируется, то его хеш можно хранить хоть на листочке, хоть в CSV. Оно будет и безопаснім и CSV не сломает
безопасным, при условии, что он не попадал в базы хешей, такие как вот эта https://md5decrypt.net/en/Sha256
это если не солить
вроде ж только конченые хранят пароли как есть без хеширования? это ж доступная самая базовая мера защиты юзера или я чего-то не знаю?
ты не знаешь как много конченных в мире
Человеческая тупость безгранична
Чтобы написать коммент, необходимо залогиниться
это ломает нам CSV с вами данными"