Не катит. В запросе у нас WHERE идет с новой строки, а в данном случае комментируется текущая строка, поэтому и ошибок не выдает. Можем даже проверить: Code: /forum.html?func=who'+where+1=1+--+a на что получаем ошибку синтаксиса и очевидно, что основной WHERE у нас не закомментировался.
Disasm У Вас скорее всего версия Mysql >=5.0.51, она требует закрытия комментария "/*", отсюда и ошибка синтаксиса: а однострочный, как вы сами заметили не будет работать Попробуйте сконцентрировать своё внимание на первом запросе в инсерте. Если там таких проблем нет. то возможно удастся провести more than 1 row вот материал: /threadnav35207-1-10.html И кстати. Ээээ?
Большое спасибо! Действительно интересный материал, но опять же, чтоб спровоцировать more than 1 row мне необходимо закомментировать хвост. А это, как вы уточнили, в Mysql 5.0.51 и выше, реализовать не удастся. jokester Если у вас есть еще какие-нибудь соображения, то поделитесь, если не затруднит.
Насколько я понимаю запрос имеет такую форму: где уязвимый параметр func, и судя по error на сингл комент /* у нас 5, и для more than 1 row вам не обязательно необходимо коментить оставшуюся часть запроса т.к. в 5 давно есть сабгвери, следовательно $func = 1%27 or 1=IF(SUBSTRING((SELECT version()),1,1)=4,0,(select 1 union select 5)) "UPDATE table SET time='{$now}', what='{$what}', do= '{$do}', task= '{$task}', link= '{$link}', func= '{$func}'" WHERE userid={$my->id} AND userip='{$myip}'";
Я-же написал, моё мнение нужно смотреть запрос с INSERT о котором вы пишите тут: Если там тоже скуль, то возможно она не такая замороченная. Ну или пробовать составить запрос без комментария, учитывая его весь, вставляя конструкции вроде "and if(1=1,1,2)" или подзапросы. Но это уже СООБРАЖЕНИЯ, тоесть просто первое, что приходит в голову, нужно тестить и лучше на локалке, конечно. 2 PaCo Там видишь ещё какое г. Надо учитывать
Вижу вот это link= '/index.php?func=bla%27/*', func= 'bla'/*' я ж не случайно написал %27, даже если бы кавычка оставалась как есть можно и /**/ закоментить что нам не нравиться если имеем 2 уязвимых параметра, только надо подумать как . З.Ы. jokester согласен тестить нужно а так это гадания на картах. А что этот топ здесь делает? По моему это далеко не кодинг. ЗЫ про оставшуюся та ковычку я и забыл Вообшем ТС вот тебе для блинд запрос по тому адресу что ты мне в пм отослал(пробелы поуберай): сама сабгверя SELECT%20version() ну и т.д., версия 5, значит есть INFORMATION.SCHEMA вопрос что в ней есть - ну это уже сам смотри.
Пытаюсь выполнить запрос: /forum.html?func=who'+or+1=IF(SUBSTRING((SELECT+version()),1,1)=4,0,(select password from users where id=1))+--+a Запрос действительно выполняется, ошибок в ответку нет. Меняю имя поля на не существующее и в ответ получаю соответствующую ошибку - значит выборка прошла успешно. Уважаемые Гуру, я одного не могу понять, как мне это может помочь в получении значения определенной записи?
2Disasm - блайнд там выполним, пример запроса тебе показали так что стоит немного почитать линки которые тебе дали, никто тебе не будет описывать все до мелочей, сам запрос которых ты хочешь зделать нужно писать в условии IF а не в варинтах при выполнении/не выполнении условия в IF: IF(ЗДЕСЬ_УСЛОВИЯ_СЧИТАЙ_САБ_ГВЕРЯ_И_ПРОВЕРКА_ЕЕ_РЕЗУЛЬТАТОВ,0,ЗДЕСЬ_ТО_ЧТО_БУДЕТ_ВЫЗЫВАТЬ_ОШИБКУ_ПРИ_НЕ_ВЫПОЛНЕНИИ_УСЛОВИЯ)
Подскажите, я мыслю в правильном направлении: Как я понял с помощью этого запроса я могу выполнить только посимвольный брут значения определенного поля? Значение целиком я получить никак не смогу?
Да ты правильно мыслишь если только у тебя нет возможности посмотреть те значения которые ты UPDATE или INSERT в таблицу посредством сабгвери их занести а потом прочитать, там я не увидел такой возможности - скорее всего стата доступна только админу, значит только посимвольный перебор, можешь поискать еще что нибудь с выводом значений не исключенно что есть.
Ребята, все гораздо проще.... без всяких блинд SQL-inj Так вот... Делаем сначала вот так /f****.html?func=who',%20userid=123,%20link=(SELECT%20jos_users.password%20FROM%20jos_users%20WHERE%20jos_users.id=123)%20--%20a в результате при обновлении таблицы jos_whois_online мы перезаписываем поля userid и link... Если посмотреть внимательно то поле link в исходном запросе имело вид Где $link было то что у нас в адресной строке браузера! Но наше новое поле дальше(после старого) по сему оно главней=) в итоге мы имеем такой как нам надо перезаписаный идентификатор+ссылку.... Далее мы заходим на /f****.html?func=who и видим что онлайн появился новый юзер.... наводим на него мышку и видим что его АйДи равен тому что мы перезаписали. Вот чудо)) Далее смотрим где ж это чудо находится? и видим что вместо ссылки у нас хеш его пароля Вуаля! и не стоит мучать сервак слепой SQL-inj Оффтоп or and etc... имеет смысл использовать только в WHERE части запроса или я не прав?
xa-xa89 Отличное решение! А я блин заморочился, написал брут и посимвольно сбрутил хеш:соль Вот, что значит дурная голова не дает покоя рукам =)
Хочу выразить огромную благодарность: xa-xa89, PaCo, jokester за то, что нашли время проникнуться вопросом и дать действительно стоящие рекомендации. Желаемый результат получен. За эти несколько дней понял, что вообще ничего не знаю о SQL запросах, но при этом перелопатил кучу документации и сейчас накопил некоторый багаж полезных знаний. Еще раз всем большое спасибо!