Решения
http://hexpresso.wordpress.com/2013/05/27/secuinside-2013-givemeshell-write-up/ (hexpresso) http://tunz.tistory.com/43 (tunz) |
Назад к списку заданий |
Задание (web)
ip : 119.70.231.180
port : 8765
Исполняемый файл givemeshell.zip
Подробное описание
Имя этой задачки говорит само за себя. Нам надо получить shell… Пробуем подключиться:
Следующий шаг - анализ кода сервиса. Сам исполняемый файл сервиса доступен для скачивания.
Итак, исполняемый файл – это сервис, запущенный по ip-адресу 119.70.231.180, порт 8765 (хотя позднее авторы добавили еще несколько (8761,8762,8763,8764,8765), видимо, из-за большой нагрузки желающих решать задачу). Здесь удобнее всего использовать IDA Pro. Алгоритм работы сервиса прост, он умещается буквально в 120 байт (функция 0x0804877C):
Как видим, сложность задачи заключается в том, что ограничена длина вводимой команды. Т.е. оболочка (shell) будет выполнять только те команды, умещающиеся в 5 символов. "ls", конечно, выполниться, но результат мы не видим, потому что вывод команды идет в консоль (stdout).
Следовательно, наше решение – перенаправить вывод наших команд в сокет (да, у него дескриптор будет равен 4). Если вы хотите увидеть результат операции ls, то необходимо набрать: Тем не менее, такой вариант дает нам право всего лишь на одну команду, без опций и многого другого. Решение простое, мы можем запустить новую оболочку и перенаправить ее ввод и вывод: Результат:
Флаг: |