Конкурс "Системный Администратор 2013", Первые IT-шные олимпийские игры |
Здравствуйте, гость ( Вход | Регистрация )
Конкурс "Системный Администратор 2013", Первые IT-шные олимпийские игры |
23.8.2013, 22:32
Сообщение
#161
|
|
Junior Member Группа: Пользователи Сообщений: 40 Регистрация: 10.8.2012 Пользователь №: 1262 |
Вообщем там помимо http используются несколько протоколов - gdsdb (для БД Firebird), ftp (правда это неверный путь) и smtp (тоже безуспешно) ... ищем дальше ... (можно ставить фильтры в Wireshark прямо по этим протоколам). И еще используется SSL ... вот как расшифровать данные передаваемые через защищенное соединение и можно ли это ... Decrypting SSL traffic with Wireshark, and ways to prevent it http://wiki.wireshark.org/SSL Analysing and Decrypting HTTPS traffic with Wireshark Мне кажется в данном случае расшифровать данные секурного соединения будет невозможно. Разве что.. где-то спрятаны ключи от ssl для аутентификации. Но не думаю что они так возились. |
|
|
23.8.2013, 22:35
Сообщение
#162
|
|
Junior Member Группа: Пользователи Сообщений: 40 Регистрация: 10.8.2012 Пользователь №: 1262 |
Пардон.. немного не так.
Если где-то в дампе находится сеансовый ключ https-сеанса. Только с помощью него можно расшифровать передаваемые данные для записанного дампа сетевой активности. |
|
|
23.8.2013, 22:35
Сообщение
#163
|
|
Junior Member Группа: Пользователи Сообщений: 44 Регистрация: 11.8.2012 Пользователь №: 1267 |
А что там на принтер печатать отправили? кто нить собрал документ
|
|
|
23.8.2013, 22:50
Сообщение
#164
|
|
Junior Member Группа: Пользователи Сообщений: 40 Регистрация: 10.8.2012 Пользователь №: 1262 |
Я сейчас 6-й админский вопрос решаю ... эпично они извратились с wrong answer ))) Даже такая ссылка в дампе открывается (т.е. кто-то смотрел ролик с названием wrong answer )) Бодренькая песенка надо сказать ) Или вот такие вещи открывают )) http://universal_en_ru.academic.ru/2629776/wrong_answer ... Но мы все равно найдем )) А еще открывают страницу вот такого пользователя ВКонтакте ... http://vk.com/a001mp99 ... интересно, чтобы запутать, или все это неспроста? ) http://www.kinopoisk.ru/film/178356/ - и по кино прошлись ) http://900igr.net/prezentatsii/anglijskij-...ong-Answer.html - и по Шекспиру ... даром времени не теряли видно )) http://ringfone.ru/prikolnye/38187-wrong-answer.html - и даже мелодию на телефон такую нашли ... чем же кончится )) Вот еще что смотрели http://sidneychurlbert.com/images/WrongAnswer.jpg http://4.bp.blogspot.com/-DY_k_dCp9EE/TvzO...rong+answer.jpg http://www.sheffkids.co.uk/childrenssite/E...ng%20answer.jpg |
|
|
23.8.2013, 23:30
Сообщение
#165
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
А что там на принтер печатать отправили? кто нить собрал документ Собрали. Бинго -------------------- |
|
|
23.8.2013, 23:34
Сообщение
#166
|
|
Junior Member Группа: Пользователи Сообщений: 40 Регистрация: 10.8.2012 Пользователь №: 1262 |
И по фтп заходили, с логином itstarz и паролем answer
И мыло отправляли на answer.ru с темой answer и текстом wrong :-( Пока копаю еще дальше... |
|
|
24.8.2013, 0:05
Сообщение
#167
|
|
Junior Member Группа: Пользователи Сообщений: 124 Регистрация: 10.8.2012 Пользователь №: 1249 |
а за разработчика никто не идет?
-------------------- -- Real programmers never sleep. They enter brainsaver mode.
|
|
|
24.8.2013, 0:18
Сообщение
#168
|
|
Junior Member Группа: Пользователи Сообщений: 34 Регистрация: 12.8.2013 Пользователь №: 1658 |
|
|
|
24.8.2013, 0:46
Сообщение
#169
|
|
Junior Member Группа: Пользователи Сообщений: 124 Регистрация: 10.8.2012 Пользователь №: 1249 |
я уже следующую - эту решал перебором, но поскольку ответ точный - ещё не заносил, жду коллег
-------------------- -- Real programmers never sleep. They enter brainsaver mode.
|
|
|
24.8.2013, 0:52
Сообщение
#170
|
|
Newbie Группа: Пользователи Сообщений: 11 Регистрация: 24.8.2013 Пользователь №: 1678 |
Смотрю 5-ый вопрос про разработчика.
Если решать не совсем верно, то просто в момент загрузки консоли нужно нажать на кнопку "paste to clipboard". В результате начальный скрипт не выполнится, мы загрузимся из под root'а, и спокойно запустим open_door. Но так не пойдёт) В реальном же случае у нас нет доступа к папке /root. От нас хотят определённых действий с файлом crypto. Вот код его основной процедуры: CODE public main .text:080485BA main proc near ; DATA XREF: _start+17o .text:080485BA push ebp .text:080485BB mov ebp, esp .text:080485BD and esp, 0FFFFFFF0h .text:080485C0 sub esp, 120h .text:080485C6 mov dword ptr [esp], offset s ; "Enter the text to be encrypted: " .text:080485CD call _puts .text:080485D2 mov dword ptr [esp+8], 0FFh ; nbytes .text:080485DA lea eax, [esp+14h] .text:080485DE mov [esp+4], eax ; buf .text:080485E2 mov dword ptr [esp], 0 ; fd .text:080485E9 call _read .text:080485EE mov byte ptr [esp+113h], 0 .text:080485F6 mov dword ptr [esp+4], 0Ah ; c .text:080485FE lea eax, [esp+14h] .text:08048602 mov [esp], eax ; s .text:08048605 call _strchr .text:0804860A mov [esp+11Ch], eax .text:08048611 cmp dword ptr [esp+11Ch], 0 .text:08048619 jz short loc_8048625 .text:0804861B mov eax, [esp+11Ch] .text:08048622 mov byte ptr [eax], 0 .text:08048625 loc_8048625: ; CODE XREF: main+5Fj .text:08048625 lea eax, [esp+14h] .text:08048629 mov [esp], eax ; s .text:0804862C call _strlen .text:08048631 mov [esp+118h], eax .text:08048638 mov eax, 100h .text:0804863D sub eax, [esp+118h] .text:08048644 mov edx, [esp+118h] .text:0804864B lea ecx, [esp+14h] .text:0804864F add edx, ecx .text:08048651 mov [esp+8], eax ; n .text:08048655 mov dword ptr [esp+4], 0 ; c .text:0804865D mov [esp], edx ; s .text:08048660 call _memset .text:08048665 mov eax, [esp+118h] .text:0804866C mov [esp+4], eax .text:08048670 lea eax, [esp+14h] .text:08048674 mov [esp], eax .text:08048677 call encrypt .text:0804867C mov dword ptr [esp+4], offset modes ; "w" .text:08048684 mov dword ptr [esp], offset filename ; "/tmp/root/encrypted" .text:0804868B call _fopen .text:08048690 mov [esp+114h], eax .text:08048697 lea eax, [esp+14h] .text:0804869B mov [esp+4], eax ; format .text:0804869F mov eax, [esp+114h] .text:080486A6 mov [esp], eax ; stream .text:080486A9 call _fprintf .text:080486AE mov eax, 0 .text:080486B3 leave .text:080486B4 retn .text:080486B4 main endp То есть от пользователя получается строка, получается указатель на какой-то определённый символ (strchr), сравнивается с чем-то. Если есть совпадение, что дополнительно производятся какие-то операции (какие? не очень хорошо понимаю ассемблерный код). Потом строка шифруется.. и записывается в файл /tmp/root/encrypted. Но как? Ведь у нас же нет доступа на запись в ту папку? И каким образом корректное выполнение данной программы может выполнить тот самый open_door? Нужно думать..) |
|
|
24.8.2013, 1:12
Сообщение
#171
|
|
Junior Member Группа: Пользователи Сообщений: 124 Регистрация: 10.8.2012 Пользователь №: 1249 |
файл suid-ный: он может писать и в рут и куда угодно.
только непонтяно, как /tmp/root/encrypted может быть связан с /tmp/root/open_door может он как-то вызывается автоматом? -------------------- -- Real programmers never sleep. They enter brainsaver mode.
|
|
|
24.8.2013, 5:38
Сообщение
#172
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
Код int __cdecl main() { int v1; // [sp+14h] [bp-10Ch]@1 char v2; // [sp+113h] [bp-Dh]@1 FILE *v3; // [sp+114h] [bp-Ch]@3 size_t v4; // [sp+118h] [bp-8h]@3 char *v5; // [sp+11Ch] [bp-4h]@1 puts("Enter the text to be encrypted: "); read(0, &v1, 0xFFu); v2 = 0; v5 = strchr((const char *)&v1, 10); if ( v5 ) *v5 = 0; v4 = strlen((const char *)&v1); memset((char *)&v1 + v4, 0, 256 - v4); encrypt(&v1, v4); v3 = fopen("/tmp/root/encrypted", "w"); fprintf(v3, (const char *)&v1); return 0; } int __cdecl encrypt(int a1, int a2) { int result; // eax@3 int i; // [sp+Ch] [bp-8h]@1 for ( i = 0;; ++i ) { result = i; if ( i >= a2 ) break; *(_BYTE *)(a1 + i) = (*(_BYTE *)(i + a1) | 0x80) & ((unsigned __int8)~*(_BYTE *)(i + a1) | 0x7F); } return result; } Вот вам несколько декомпилированный вариант crypt'а ... пока нет возможности покопать глубже. Но по крайней мере что делает crypt - можно понять отсюда. Пароль root хранится в зашифрованном виде в /etc/shadow ... $6$uCI.xhVo$/aa2h7RggYB.8m1j3kzDGG4lmArWaG1mYjp48P8I7.aABDRz/GY.peVaPAdNDCR7rt6JR7xrb5UHsAlIYqedi1 И если мне не изменяет память, то это SHA-512(Unix). -------------------- |
|
|
24.8.2013, 6:32
Сообщение
#173
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
Раработчик. Вопрос 6.
Вообщем-то с файлом smile тоже решили. Для решения задачи лучше всего взять AnsiFilter (использовать консольную версию с преобразованием в html), не забудьте также найти библиотеки mingwm10.dll и libgcc_s_dw2-1.dll - их нет в комплекте. Достаточно простой вопрос ... -------------------- |
|
|
24.8.2013, 6:40
Сообщение
#174
|
|
Junior Member Группа: Пользователи Сообщений: 99 Регистрация: 14.8.2013 Пользователь №: 1665 |
|
|
|
24.8.2013, 6:43
Сообщение
#175
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
Я тоже со спичками вожусь. :-) Алгоритм решения готов, осталось реализовать - прогу написать и ответ получить. Мы пока за разработчика только 6-й вопрос решили. Со спичками оставили на потом ... гораздо интереснее сейчас подумать над reverse-me ... Толку что мы извлекли алгоритм шифрования оттуда. Пока непонятно как это использовать, т.к. шифрованные данные она все равно пишет в /tmp/root/encrypted. Допустим, мы подменим в этой программе /tmp/root/encrypted на что-то еще. Сделать это проще простого, однако, залить ее на место /home/user/crypto не получится, т.к. у нас нет доступа на запись в него p.s. Спать-то хоть ложились? ) -------------------- |
|
|
24.8.2013, 7:33
Сообщение
#176
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
По 5-му заданию для программистов. Идея на самом деле напрашивается следующая. У нас есть некоторая утилита /home/user/crypto, которая берет введенный пользователем text (через clipboard мы можем передать туда что угодно), шифрует его по известному алгоритму (см. пост #172, функция encrypt декомпилирована) и пишет его в /tmp/root/encrypted. При этом файл suid'ный, т.е. он действительно может писать куда угодно. Теоретически, если бы мы могли "примонтировать" на место /tmp/root/encrypted, например, /etc/shadow - то мы могли бы записать туда нужную нам информацию, с помошью crypto (сформировав например исходный текст таким образом, чтобы на выходе после шифрования получилось то что нам нужно) ... Ну и потом через su user получаем права рута и открываем дверь.
Но ... весь вопрос в том, как "осуществить замену" /tmp/root/encrypted на что-нибудь другое. Можно ли как-то "перенаправить" вывод в другое место - это уже вопрос к гуру в Linux -------------------- |
|
|
24.8.2013, 8:14
Сообщение
#177
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
p.s. Ну и со спичками вариантов должно быть меньше 220 ... 220 - это число вариантов валидных равенств. В задании спрашивается про число головоломок, т.е. число первоначальных положений спичек, составляющих верное или неверное равенство, переставив 1 спичку в котором мы получаем верное равенство.
Теперь по идее, из этих 220 надо убрать лишние. Сначала можно попробовать найти валидные начальные положения. Взять спичку мы можем либо с цифры, либо со знака. Я бы сначала поискал цифры, которые при убирании 1 спички можно преобразовать в другую цифру, а также цифры, которые при добавлении одной спички превращаются в другую цифру. Так, например, если из 6 взять одну спичку и переложить в нее же - получим 0. Давайте посмотрим сначала цифры, которые можно преобразовать в цифры удалением одной спички (мы ее перекладываем) и цифры которые можно преобразовать в цифры добавлением спички: 6 - спичка = 5 7 - спичка = 1 8 - спичка = 6 8 - спичка = 9 9 - спичка = 5 9 - спичка = 3 Потом составим что можно получить добавлением спички. Потом убиранием и добавлением (т.е. перемещением спички в пределах одной цифры) ... а потом можно попробовать исключить комбинации )) Как-то так ) p.p.s. Пойду-ка я спать )) Ждите после обеда ... -------------------- |
|
|
24.8.2013, 13:24
Сообщение
#178
|
|
Junior Member Группа: Пользователи Сообщений: 124 Регистрация: 10.8.2012 Пользователь №: 1249 |
у меня как-то больше 220 получается.
вот частичка лога работы проге. в чем я не прав? фишка в том, что A+B=C и A=B+C разные случаи, или я как-то неправильно понял задание, то есть 0 + 1 = 7 и 1 + 0 = 7 разные задачи.
Прикрепленные файлы
-------------------- -- Real programmers never sleep. They enter brainsaver mode.
|
|
|
24.8.2013, 13:29
Сообщение
#179
|
|
Junior Member Группа: Пользователи Сообщений: 124 Регистрация: 10.8.2012 Пользователь №: 1249 |
Decker, а ты чем реверсил? я Восстанавливал код ручками с дизасма IDA. у тебя гораздо читабелнее получилось.
Может /tmp/root/encrypted исполняется когда туда что-то валидное напишешь. Я писал туда шелл скрипт с простейшим ls /root - ничего не получилось... Хотя декриптор тут простейший - надо тем же алгоритмом ещё раз пройтись. Может быть можно запустить crypto на какой-то другой машине, дабы проверить работу, у меня на убунте виртуальной оно не призналось как исполняемый файл Парадокс.. Рабочие языки c/c++ и дельфи, а задачки решаю с помощью перла -------------------- -- Real programmers never sleep. They enter brainsaver mode.
|
|
|
24.8.2013, 14:56
Сообщение
#180
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
С алгоритмом я перегнул палку ... нечего по ночам сидеть )) Вообщем словесное описание наверное такое:
1. Перебираем все возможные комбинации валидных начальных положений спичек. Валидными считаются комбинации, когда цифра выглядит как "трафарет" и знаки тоже. Плюс получившееся выражение удовлетворяет одному из 4-х паттернов. Это будет начальное расположение головоломки. 2. Теперь мы должны рассмотреть ВСЕ варианты, можем ли мы перемещением одной спички превратить "начальное выражение", т.е. головоломку в валидное равенство. Это можно сделать с помощью операции ПЕРЕМЕЩЕНИЕ_СПИЧКИ )) Спичку можно перестить с одного символа на другой, а можно с этого на тот же самый. В результате мы получим n-ое количество выражений, если хоть одно из них является валидным равенством, то комбинация является верной головоломкой. Увеличиваем счетчик. Ну а теперь собственно нужно составить таблицы для процедур: МИНУС_СПИЧКА, ПЛЮС_СПИЧКА, МИНУС_ПЛЮС_СПИЧКА. Где первые две составляют перемещение, когда мы сняли спичку с одного символа и поставили на другой, а последнее - когда снятие/постановка спички происходят с одного и того же символа. Такие варианты надо рассмотреть для каждой цифры ... p.s. Никто не хочет заняться? Проверили бы результаты ... я уже начинал тут постом выше для МИНУС_СПИЧКА, то же самое надо сделать для двух остальных процедур. Ну и если у кого какой другой план зреет - пишите, не стесняйтесь )) -------------------- |
|
|
Текстовая версия | Сейчас: 31.1.2025, 7:28 | |