Невыносимый inurl contacts html. Инструкция по использованию jSQL Injection — многофункционального инструмента поиска и эксплуатации SQL-инъекций в Kali Linux. Получение версии WEB сервера
Каждый раз становится смешно, когда люди начинают втирать про приват дорки.
Давайте начнем с определения что такое дорка и что такое приват:
ДОРК (ДОРКА) - это маска, иначе говоря запрос в поисковик, в ответ на который система выдаст список страниц сайтов, в адресе которых содержится этот самый ДОРК.
Приват (private) - информация к которой имеет доступ только один человек или небольшая группа людей, работающих над одним проектом.
Теперь давайте разберем словосочетание "Приватная дорка
".
Если мы отправляем запрос найти сайты по данной дорке и нам выдает какой то результат, то это может сделать любой человек, а следовательно выданная информация не является приватной.
А немного про продавцов игровых/денежных/шоп дорок.
Очень много людей любят составлять дорки такого типа:
Steam.php?q= bitcoin.php?id= minecraft.php?id=
Представим что мы ничего не понимаем в дорках и попробуем глянуть сколько же ссылок нам выдаст гугл:
Наверно у вас в голове сразу появились мысли такого типа: "Хренович, да ты нихуя не шаришь, смотри сколько ссылок, люди вон деньги практически продают!"
Но я скажу вам нет, ибо сейчас глянем какие же ссылки нам выдаст такой запрос:
Я думаю суть вы поняли, теперь давайте используем оператор гугла inurl:
для точного поиска и посмотрим что же выйдет:
Ага, количество резко сократилось, то то же. А если учитывать что там будут дубли доменов + ссылки плана ***.info/vaernamo-nyheter/dennis-steam.php , то в сухом остатке получим штук 5-10.
Как думаете, насколько много людей будут прописывать у себя на сайте такие ссылки "
Вы должны быть зарегистрированы, чтобы видеть ссылки.
" и т.п. , да конечно единицы.
А значит писать дорки типа steam.php?id=
смысла нет, тогда вопрос, какие же дорки нам стряпать?
А все довольно просто, нам же нужно собрать как можно больше ссылок по нашей дорке. Наибольшее число ссылок получится с самой примитивной дорки вида index.php?id=
Опа, целых 538 миллионов, хороший результат, правда?
А давайте еще добавим inurl:
Во как, половина отпала, зато теперь практически все ссылки будут с index.php?id=
Из вышесказанного можно сделать вывод: нам нужны самые часто используемые директории, именно с них наш результат будет выше всего.
Я думаю у многих появились мысли типа: "Ну и что дальше? Нам же нужны тематические сайты, а не всякие сайты любителей щенков!". Ну конечно, но что бы перейти к тематикам сайтов - нам будет необходимо познакомиться с операторами гугла, давайте начнем. Разбирать будем не все операторы, а только те, что помогут нам с парсом страниц.
Какие есть интересующие нас операторы:
inurl:
Показывает сайты, содержащие в адресе страницы указанное слово.
Пример:
Нам нужны сайты где в адресе страницы есть слово cart.
Стряпаем запрос вида inurl:cart
и нам выдаст все ссылки где в адресе есть слово cart. Т.е. использкя данный запрос мы добились более строго выполнения нашего условия и отсева не подходящих нам ссылок.
intext:
выборка страниц производится именно по содержимому страницы.
Пример:
Допустим нам нужны страницы на которых написано слова bitcoin. Стряпаем запрос вида intext:bitcoin ,
теперь нам выдаст ссылки где в тексте использовалось слово bitcoin.
intitle: выводятся страницы, у которых в теге title присутствуют указанные в запросе слова, думаю вы уже поняли как составлять запросы, так что примеры приводить не буду.
allinanchor: оператор показывает страницы, у которых в описании есть интересующие нас слова.
related:
пожалуй один из важных операторов, который выдает сайты с похожим наполнением.
Пример:
related:exmo.com - нам выдаст биржи, попробуйте проверить сами.
Ну пожалуй все основные операторы что нам потребуются.
Теперь давайте перейдем к построению дорок при помощи данных операторов.
Перед каждой доркой будем ставить inurl:
Inurl:cart?id= inurl:index?id= inurl:catalog?id=
Давайте еще используем intext: допустим ищем игрульки, а значит нам нужны слова по типу dota2, portal, CSGO...
Intext:dota2 intext:portal intext:csgo
Если нам нужно словосочетание, то allinurl:
Allinurl:GTA SAMP ...
А теперь склеим все это и получим такой вид:
Inurl:cart?id= intext:dota2 inurl:cart?id= intext:portal inurl:cart?id= intext:csgo inurl:cart?id= allinurl:GTA SAMP inurl:index?id= intext:dota2 inurl:index?id= intext:portal inurl:index?id= intext:csgo inurl:index?id= allinurl:GTA SAMP inurl:catalog?id= intext:dota2 inurl:catalog?id= intext:portal inurl:catalog?id= intext:csgo inurl:catalog?id= allinurl:GTA SAMP
В итоге, мы получили игровые дорки с более узким и точным поиском.
Так что включайте мозги и немного экспериментируйте с поисковыми операторами и ключевыми словами, не нужно извращаться и писать дорки вида hochymnogoigr.php?id=
Всем спасибо, надеюсь хоть что то полезное из этой статьи вы вынесли.
Наследование - это механизм объектно ориентированного программирования, который позволяет описать новый класс на основе уже существующего (родительского).
Класс, который получается в результате наследования от другого, называется подклассом. Эту связь обычно описывают с помощью терминов «родительский» и «дочерний». Дочерний класс происходит от родительского и наследует его характеристики: свойства и методы. Обычно в подклассе к функциональности родительского класса (который также называют суперклассом) добавляются новые функциональные возможности.
Чтобы создать подкласс, необходимо использовать в объявлении класса ключевое слово extends , и после него указать имя класса, от которого выполняется наследование:
age = $age;
}
function add_age () {
$this->age++;
}
}
// объявляем наследуемый класс
class my_Cat extends Cat {
// определяем собственный метод подкласса
function sleep() {
echo "
Zzzzz...";
}
}
$kitty = new my_Cat(10);
// вызываем наследуемый метод
$kitty->add_age();
// считываем значение наследуемого свойства
echo $kitty->age;
// вызываем собственный метод подкласса
$kitty->sleep();
?>
Подкласс наследует доступ ко всем методам и свойствам родительского класса, так как они имеют тип public . Это означает, что для экземпляров класса my_Cat мы можем вызывать метод add_age() и обращаться к свойству $age не смотря на то, что они определены в классе cat . Также в приведенном примере подкласс не имеет своего конструктора. Если в подклассе не объявлен свой конструктор, то при создании экземпляров подкласса будет автоматически вызываться конструктор суперкласса.
Обратите внимание на то, что в подклассах могут переопределяться свойства и методы. Определяя подкласс, мы гарантируем, что его экземпляр определяется характеристиками сначала дочернего, а затем родительского класса. Чтобы лучше это понять рассмотрим пример:
age"; } } class my_Cat extends Cat { public $age = 10; } $kitty = new my_Cat; $kitty->foo(); ?>
При вызове $kitty->foo() интерпретатор PHP не может найти такой метод в классе my_Cat , поэтому используется реализация этого метода заданная в классе Cat . Однако в подклассе определено собственное свойство $age , поэтому при обращении к нему в методе $kitty->foo() , интерпретатор PHP находит это свойство в классе my_Cat и использует его.
Так как мы уже рассмотрели тему про указание типа аргументов, осталось сказать о том, что если в качестве типа указан родительский класс, то все потомки для метода будут так же доступны для использования, посмотрите на следующий пример:
foo(new my_Cat); ?>
Мы можем обращаться с экземпляром класса my_Cat так, как будто это объект типа Cat , т.е. мы можем передать объект типа my_Cat методу foo() класса Cat , и все будет работать, как надо.
Оператор parent
На практике подклассам бывает необходимо расширить функциональность методов родительского класса. Расширяя функциональность за счет переопределения методов суперкласса, в подклассах вы сохраняете возможность сначала выполнить программный код родительского класса, а затем добавить код, который реализует дополнительную функциональность. Давайте разберем как это можно сделать.
Чтобы вызвать нужный метод из родительского класса, вам понадобится обратиться к самому этому классу через дескриптор. Для этой цели в PHP предусмотрено ключевое слово parent . Оператор parent позволяет подклассам обращаться к методам (и конструкторам) родительского класса и дополнять их существующую функциональность. Чтобы обратиться к методу в контексте класса, используются символы " :: " (два двоеточия). Синтаксис оператора parent:
Parent::метод_родительского_класа
Эта конструкция вызовет метод, определенный в суперклассе. Вслед за таким вызовом можно поместить свой программный код, который добавит новую функциональность:
title = $title;
$this->price = $price;
}
}
class new_book extends book {
public $pages;
function __construct($title, $price, $pages) {
// вызываем метод-конструктор родительского класса
parent::__construct($title, $price);
// инициализируем свойство определенное в подклассе
$this->pages = $pages;
}
}
$obj = new new_book("азбука", 35, 500);
echo "Книга: $obj->title
Цена: $obj->price
Страниц: $obj->pages";
?>
Когда в дочернем классе определяется свой конструктор, PHP не вызывает конструктор родительского класса автоматически. Это необходимо сделать вручную в конструкторе подкласса. Подкласс сначала в своем конструкторе вызывает конструктор своего родительского класса, передавая нужные аргументы для инициализации, исполняет его, а затем выполняется код, который реализует дополнительную функциональность, в данном случае инициализирует свойство подкласса.
Ключевое слово parent можно использовать не только в конструкторах, но и в любом другом методе, функциональность которого вы хотите расширить, достигнуть этого можно, вызвав метод родительского класса:
name}.";
return $str;
}
}
class my_Cat extends Cat {
public $age = 5;
function getstr() {
$str = parent::getstr();
$str .= "
Возраст: {$this->age} лет.";
return $str;
}
}
$obj = new my_Cat;
echo $obj->getstr();
?>
Здесь сначала вызывается метод getstr() из суперкласса, значение которого присваивается переменной, а после этого выполняется остальной код определенный в методе подкласса.
Теперь, когда мы познакомились с основами наследования, можно, наконец, рассмотреть вопрос видимости свойств и методов.
public, protected и private: управление доступом
До этого момента мы явно объявляли все свойства как public (общедоступные). И такой тип доступа задан по умолчанию для всех методов.
Элементы класса можно объявлять как public (общедоступные), protected (защищенные) и private (закрытые). Рассмотрим разницу между ними:
- К public (общедоступным) свойствам и методам, можно получить доступ из любого контекста.
- К protected (защищенным) свойствам и методам можно получить доступ либо из содержащего их класса, либо из его подкласса. Никакому внешнему коду доступ к ним не предоставляется.
- Вы можете сделать данные класса недоступными для вызывающей программы с помощью ключевого слова private (закрытые). К таким свойствам и методам можно получить доступ только из того класса, в котором они объявлены. Даже подклассы данного класса не имеют доступа к таким данным.
public - открытый доступ:
hello"; } } $obj = new human; // доступ из вызывающей программы echo "$obj->age"; // Допустимо $obj->say(); // Допустимо?>private - доступ только из методов класса:
age"; } } $obj = new human; // напрямую из вызывающей программы доступа к закрытым данным нет echo "$obj->age"; // Ошибка! доступ закрыт! // однако с помощью метода можно выводить закрытые данные $obj->say(); // Допустимо?>protected - защищенный доступ:
Модификатор protected с точки зрения вызывающей программы выглядит точно так же, как и private: он запрещает доступ к данным объекта извне. Однако в отличие от private он позволяет обращаться к данным не только из методов своего класса, но также и из методов подкласса.
Запустите скаченный файл двойным кликом (нужно иметь виртуальную машину ).
3. Анонимность при проверке сайта на SQL-инъекции
Настройка Tor и Privoxy в Kali Linux
[Раздел в разработке]
Настройка Tor и Privoxy в Windows
[Раздел в разработке]
Настройки работы через прокси в jSQL Injection
[Раздел в разработке]
4. Проверка сайта на SQL-инъекции с jSQL Injection
Работа с программой крайне проста. Достаточно ввести адрес сайта и нажать ENTER.
На следующем скриншоте видно, что сайт уязвим сразу к трём видам SQL-инъекций (информация о них указана в правом нижнем углу). Кликая на названия инъекций можно переключить используемый метод:
Также нам уже выведены имеющиеся базы данных.
Можно посмотреть содержимое каждой таблицы:
Обычно, самым интересным в таблицах являются учётные данные администратора.
Если вам повезло и вы нашли данные администратора — то радоваться рано. Нужно ещё найти админку, куда эти данные вводить.
5. Поиск админок с jSQL Injection
Для этого переходите на следующую вкладку. Здесь нас встречает список возможных адресов. Можете выбрать одну или несколько страниц для проверки:
Удобство заключается в том, что не нужно использовать другие программы.
К сожалению, нерадивых программистов, которые хранят пароли в открытом виде, не очень много. Довольно часто в строке пароля мы видим что-нибудь вроде
8743b52063cd84097a65d1633f5c74f5
Это хеш. Расшифровать его можно брутфорсом. И… jSQL Injection имеет встроенный брутфорсер.
6. Брутфорсинг хешей с помощью jSQL Injection
Несомненным удобство является то, что не нужно искать другие программы. Здесь имеется поддержка множества самых популярных хешей.
Это не самый оптимальный вариант. Для того, чтобы стать гуру в расшифровке хешей, рекомендуется Книга « » на русском языке.
Но, конечно, когда под рукой нет другой программы или нет времени на изучение, jSQL Injection со встроенной функцией брут-форса придётся очень кстати.
Присутствуют настройки: можно задать какие символы входят в пароль, диапазон длины пароля.
7. Операции с файлами после обнаружения SQL-инъекций
Кроме операций с базами данных — их чтение и модификация, в случае обнаружения SQL-инъекций возможно выполнение следующих файловых операций:
- чтение файлов на сервере
- выгрузка новых файлов на сервер
- выгрузка шеллов на сервер
И всё это реализовано в jSQL Injection!
Есть ограничения — у SQL-сервера должны быть файловые привилегии. У разумных системных администраторов они отключены и доступа к файловой системе получить не удастся.
Наличие файловых привилегий достаточно просто проверить. Перейдите в одну из вкладок (чтение файлов, создание шелла, закачка нового файла) и попытайтесь выполнить одну из указанных операций.
Ещё очень важное замечание — нам нужно знать точный абсолютный путь до файла с которым мы будем работать — иначе ничего не получится.
Посмотрите на следующий скриншот:
На любую попытку операции с файлом нам отвечают: No FILE privilege (нет файловых привелегий). И ничего здесь поделать нельзя.
Если вместо этого у вас другая ошибка:
Problem writing into [название_каталога]
Это означает, что вы неправильно указали абсолютный путь, в который нужно записывать файл.
Для того, чтобы предположить абсолютный путь, нужно, как минимум, знать операционную систему на которой работает сервер. Для этого переключитесь к вкладке Network.
Такая запись (строка Win64 ) даёт основание нам предположить, что мы имеем дело с ОС Windows:
Keep-Alive: timeout=5, max=99 Server: Apache/2.4.17 (Win64) PHP/7.0.0RC6 Connection: Keep-Alive Method: HTTP/1.1 200 OK Content-Length: 353 Date: Fri, 11 Dec 2015 11:48:31 GMT X-Powered-By: PHP/7.0.0RC6 Content-Type: text/html; charset=UTF-8
Здесь у нас какой-то из Unix (*BSD, Linux):
Transfer-Encoding: chunked Date: Fri, 11 Dec 2015 11:57:02 GMT Method: HTTP/1.1 200 OK Keep-Alive: timeout=3, max=100 Connection: keep-alive Content-Type: text/html X-Powered-By: PHP/5.3.29 Server: Apache/2.2.31 (Unix)
А здесь у нас CentOS:
Method: HTTP/1.1 200 OK Expires: Thu, 19 Nov 1981 08:52:00 GMT Set-Cookie: PHPSESSID=9p60gtunrv7g41iurr814h9rd0; path=/ Connection: keep-alive X-Cache-Lookup: MISS from t1.hoster.ru:6666 Server: Apache/2.2.15 (CentOS) X-Powered-By: PHP/5.4.37 X-Cache: MISS from t1.hoster.ru Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Date: Fri, 11 Dec 2015 12:08:54 GMT Transfer-Encoding: chunked Content-Type: text/html; charset=WINDOWS-1251
В Windows типичной папкой для сайтов является C:\Server\data\htdocs\ . Но, на самом деле, если кто-то «додумался» делать сервер на Windows, то, весьма вероятно, этот человек ничего не слышал о привилегиях. Поэтому начинать попытки стоит прямо с каталога C:/Windows/:
Как видим, всё прошло прекрасно с первого раза.
Но вот сами шеллы jSQL Injection у меня вызывают сомнения. Если есть файловые привилегии, то вы вполне можете закачать что-нибудь с веб-интерфейсом.
8. Массовая проверка сайтов на SQL-инъекции
И даже эта функция есть у jSQL Injection. Всё предельно просто — загружаете список сайтов (можно импортировать из файла), выбираете те, которые хотите проверить и нажимаете соответствующую кнопку для начала операции.
Вывод по jSQL Injection
jSQL Injection хороший, мощный инструмент для поиска и последующего использования найденных на сайтах SQL-инъекций. Его несомненные плюсы: простота использования, встроенные сопутствующие функции. jSQL Injection может стать лучшим другом новичка при анализе веб-сайтов.
Из недостатков я бы отметил невозможность редактирования баз данных (по крайней мере я этого функционала не нашёл). Как и у всех инструментов с графическим интерфейсом, к недостаткам этой программы можно приписать невозможность использования в скриптах. Тем не менее некоторая автоматизация возможна и в этой программе — благодаря встроенной функции массовой проверки сайтов.
Установленного образца и сертификат . По специальная скидка на любые факультеты и курсы!