ну например если делать запрос /search.cgi?q='+order+by+100-- просто без ошибок открывается обшая категория и на order+by+1 тоже такое. Думал редир но не похожа на того. карочи на ' ругается и показывает ')
Oo никто тебя телепатом не назвал )) Я прекрасно знаю где редирект где нет. Если нету дельных советов не путай. Просто вопрос было в том как обойти если ругается на одинарную кавычку добавив )
to YuNi|[c Основываясь на ошибке, можно предположить, что параметр 'q' не обрамлен в одинарные кавычки в запросе ... следовательно запрос к базе можно составить и без ее использования Например: ?q=1) union select 1,2,3,4,5/* Так пройдет только без LIKE условия, если запрос будет примерно таким Code: mysql_query("SELECT title FROM content WHERE (LIKE %$q%)") То /* не обрежет %) ... запрос выполнится и не вернется никакого результата... что бы обрезать %) в LIKE запросе за место /* используй # Только тут походу блинд,так что можешь начинать подбирать
Еще вопрос если ссылка будет вида то как правильно сделать запрос, так как уже почти все сайты так настравиваются.
asd/5/12/8'+order+by+10+--+ Iceangel_: данный плюс говорит о незнании синтаксиса комментариев mysql... Ayowa данный плюс говорит о том, что я люблю симметрию, мало того, подобный стиль встречается не только у меня. Мне прекрасно известно о том, что в документации говорится только про последний символ после однострочного комментария. http://phpclub.ru/mysql/doc/comments.html А вот еще слова чувака I-I()/Ib: Источник: https://forum.antichat.ru/thread43966.html Выходит, он тоже не знает синтаксис комментариев mysql. Безусловно, это является моей критической ошибкой, epic fail я бы сказал.
Не раз встречал что в инъекциях в ЧПУ знак плюса + переваривается как-то не так а если использовать пробел то все работает как надо. Раз уж заговорили о ЧПУ у мя тоже есть вопрос: точно есть иньекция в /id-28.html, например /id-28-1.html показывает /id-27.html и даже есть вывод ошибок. Code: http://www.alyans-pr.ru/news/id-28.html Но вот добиться чего-либо толкового, хотя бы and 1=1 не удалось. Буду рад услышать ваши предложения.
Спасибо, блин что-то я туплю, не выспался видать, про скобочки совсем забыл. Все равно, ветка четвертая, лениво ковырять, пойду искать что-нить поприличнее.
Эмм с чего это можно так предположить? Просто он не закомментировал запрос и у него получается примерно вот такая фигня: примерный запрос: после ') Вот и ошибка near ')' Если запрос будет таким, он не сработает, like %$q% совсем без кавычек заюзать не получится, ну и комментарий "/*" запросто срежет %) если составить нормальный запрос: q=1')+union+select+1/*
to jokester Прошу прошения,действительно пропустил в SQL запросе '' при использование LIKE. А теперь непосредственно по теме. Вот ошибка из самого первого поста Если взять такой запрос: и передать параметр q=' , то вылетит другая ошибка: Что показывает не соответствие ошибок с постом пользователя YuNi|[c. Для получения такой же ошибки, как в посте пользователя должен иметь место фактор,когда переменная не обрамлена в одинарные кавычки ... исходя из этого вряд ли в том запросе присутствует LIKE оператор или присутствует, но уже после уязвимой переменной ...
Подскадите пожалуйста. Ума не приложу Вот код: PHP: include("config.php"); $response=mysql_query("SELECT * FROM articles WHERE id='".$_GET['id']."'"); $result=mysql_fetch_array($response); ... echo " <table width=\"100%\"> <tr><th>".$result['title']."</th></tr> <tr><td><img src=".$result['image']." width=200><br>".$result['text']."</td></tr> </table><br> "; Почему не проходит инъекция? когда подставишь ковычку - ошибку есть mysql_fetch_array(). А странно то, что если убрать рядом id ковычки одинарные, т.е. запрос станент таким PHP: mysql_query("SELECT * FROM articles WHERE id=".$_GET['id'].""); то обычная инъекция проходит! В чём такая странность из-за ковычек. подскажите плиз
ребят понял уже оказывается там нету скуля а просто ошибка. Так как насчет этого вопроса. Прочел много статей но про скули таких видов не видал
Запрос то ты какой передаешь страннице?Напиши его пожалуйста, т.к без него тебе вряд ли помогут разобраться с ошибкой, а могут написать готовое решение ... получив его, знаний полученных в итоге будет 0. А ошибку тебе разберут,объяснят и подскажут почему было не правильно ... я думаю с этого будет больший толк.
Пройдет и очень просто ... при PHP: mysql_query("SELECT * FROM articles WHERE id=".$_GET['id'].""); id = 3 union select 1,2,3,4,5/* вот и весь запрос ... кавычки даже не к чему.
первый вариант. но закрывай запрос по-другому. а то модррерайт не поймёт тебя http://site.com/galle/99/1/1/8'+order+by+10+--+/
Тут ничего особенного )))) Это идентично PHP: mysql_query("SELECT * FROM articles WHERE id=$_GET[id]"); Теперь инекция пройдет ?
Я так и не понял вопроса =\ в коде, который ты предоставил есть следующее: mysql_query() выполняет mysql запрос. в качестве входного параметра - строка. в твоем случае это строка "SELECT * FROM articles WHERE id=".$_GET['id']."" эта строка остоит из трёх частей - "SELECT * FROM articles WHERE id=" - $_GET['id'] - "" все эти части соединяются воедино и получается одна строка. первая и третья части обрамлены в двойные ковычки. вторая часть - это данные которые поступают через GET если $_GET['id'] будет например так: site/?id=123 то вся строка mysql запроса примет вид: "SELECT * FROM articles WHERE id=123" sql-injection: site/?id=123 and 1=0 union select 1,2,3 запрос примет вид: "SELECT * FROM articles WHERE id=123 and 1=0 union select 1,2,3"
Я же тебе уже написал. Возьмем в качестве примера вот этот вариант: galle/99/1/1/8'/order/by/10/* Если исходить из логики построения вот такого запроса, можно сделать вывод, что в бд попадает вот такое нечто: select * from newz where asd='galle 99 1 1 8 order by 10 *' ... Естественно, мускул такого не поймет. Имхо, исходная строка имеет вид: galle.php?year=99&month=1&day=1&hernya=8 Замечательный модуль апача, mod_rewrite, это пережевывает и выпихивает то, что мы имеем. Сам несколько раз сталкивался с подобными штуками, к примеру : asd.com/gallery/234658234+and+1=7+--+.html Поскольку апач модифицирует юрлку с помощью регулярных выражений, скорее всего, на обратном пути в процессе "расшифровки" в качестве разделителя он использует "/" так что возможно, в данном случае, комментарий типа "/*" не подойдёт, хотя скажу сразу, что особо сильно в работу мод_рерайт не въезжал и это рассуждение о многострочном комментарии может быть неверным. ЗЫ, кому интересно, доки по мод_рерайту лежат тута: http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html Если я что-то неправильно сказал - поправьте.