Ghost in the Shellcode CTF 2014 (DOS Attack)

Решения

Назад к списку заданий

Задание (Choose your Pwn Adventure 2)

Question 21 - DOS Attack
Points: 200
What x86 instruction has been used to allow access to extended memory without ever entering protected mode?

Подробное описание

Отрывок из блога http://compblog.ilc.edu.ru/blog/3872.html

Чтобы объяснить, что в LOADALL такого бесценного, давайте вспомним, что такое реальный и защищённый режимы процессоров архитектуры X86.
В реальном режиме, любой адрес задаётся через сегмент и смещение, причём, в силу формулы расчёта адреса (адрес = сегмент * 16 + смещение), в этом режиме можно было использовать всего мегабайт оперативной памяти. С развитием платформы IBM PC, это ограничение стало сильно мешать, и Intel стали искать способ, как заставить память выше мегабайта адресоваться, не ломая при этом обратную совместимость. В результате на свет появился так называемый защищённый режим, в котором порог адресации был отодвинут аж до четырёх гигабайт, но в него ещё надо было специальным образом переключиться. Что характерно, пути назад в реальный режим для первых поколений "защищённых" ЦП просто не существовало. Ну разве что через "мягкий" сброс. Но это медленно, затратно, и вообще.
И вот тут на арену в сверкающих доспехах врывается LOADALL.
Что же такого он умел делать?
Если вкратце - то он был способен, без выхода из реального режима, открыть доступ ко всей доступной памяти, путём прямой перезаписи дескрипторных таблиц ЦП. Иного метода доступа к ним просто не существовало. Другое дело, что никаких проверок на допустимость значений, подаваемых на вход, не проводилось (недокументированная инструкция же!), и с помощью LOADALL процессор было проще простого не переключить, а переглючить. Тем не менее, дело того стоило, и в защищённый режим стало принято заходить лишь по крайней необходимости (поскольку программы, рассчитанные на реальный режим, в защищённом просто отказывались работать), а к памяти обращаться через менеджеры типа HIMEM или RAMDRIVE, в которых применялся LOADALL. Дальше - больше: из DOS эта команда мигрировала и в Windows, и в OS/2. Более-менее остановило эту вакханалию лишь широкое распространение Intel i386. Примечательно, что в нём решили просто подпереть один костыль с защищённым режимом ещё одинм костылём - "виртуальным" режимом, в котором позволялось работать программам реального режима, запущенным из-под защищённого.

Ответ:
LOADALL

Пока не указано иное, содержимое этой страницы распространяется по лицензии Creative Commons Attribution-ShareAlike 3.0 License