Каждый программист по сути своей — хакер. Ведь первоначально хакингом называли поиск искусного и неочевидного решения. Понимание принципов программирования помогает находить уязвимости, а навыки обнаружения уязвимостей помогают создавать программы, поэтому многие хакеры занимаются тем и другим одновременно. Интересные нестандартные ходы есть как в техниках написания элегантных программ, так и в техниках поиска слабых мест.
С чего начать? Чтобы перезаписывать память с помощью переполнения буфера, получать доступ к удаленному серверу и перехватывать соединения вам предстоит программировать на Си и ассемблере, использовать шелл-код и регистры процессора, познакомиться с сетевыми взаимодействиями и шифрованием и многое другое.
Как бы мы ни хотели верить в чудо, программное обеспечение и компьютерные сети, от которых зависит наша повседневная жизнь, обладают уязвимостями.
Мир без хакеров — это мир без любопытства и новаторских решений. (Джон Эриксон).
ПРОГРАММИРОВАНИЕ.
Словом «хакер» называют как тех, кто пишет код, так и тех, кто эксплуатирует его уязвимости. Несмотря на разницу конечных целей, представители обеих групп пользуются сходными техниками для решения задач. Понимание принципов программирования помогает находить уязвимости, а навыки обнаружения уязвимостей помогают при написании программ, поэтому многие хакеры занимаются тем и другим одновременно. Интересные нестандартные ходы обнаруживаются как в техниках написания элегантных программ, так и в техниках поиска в них слабых мест. Английское слово hacking означает обнаружение искусного и неочевидного решения задачи.
Приемы, которые можно обнаружить в эксплуатирующем уязвимости коде, обычно по-новому используют принятые правила, что позволяет обойти защиту. Аналогичная ситуация имеет место при написании программ: существующие правила применяются новыми и творческими способами, но уже не для обхода систем безопасности, а для сокращения кода и увеличения его эффективности. Чтобы решить какую-либо задачу, можно написать бесконечное множество программ, но по большей части они будут неоправданно громоздкими, сложными и неаккуратными. Компактные, эффективные и хорошо продуманные решения встречаются нечасто. О таких программах говорят, что они элегантные, а искусные и оригинальные решения, обеспечивающие их эффективность, принято называть английским словом, не имеющим адекватного аналога в русском языке, — hacks. Все хакеры ценят и красоту элегантного кода, и досконально продуманные приемы, обеспечивающие эту элегантность.
ОГЛАВЛЕНИЕ.
Предисловие.
Благодарности
От издательства.
0x100 Введение.
0x200 Программирование.
0x210 Что такое программирование?.
0x220 Псевдокод.
0x230 Управляющие структуры.
0x231 Конструкция if-then-else.
0x232 Циклы while/until.
0x233 Цикл for.
0x240 Основные концепции программирования.
0x241 Переменные.
0x242 Арифметические операторы.
0x243 Операторы сравнения.
0x244 Функции.
0x250 Практическое применение.
0x251 Расширяем горизонты.
0x252 Процессор х86.
0x253 Язык ассемблера.
0x260 Назад к основам.
0x261 Строки.
0x262 Базовые типы signed, unsigned, long и short.
0x263 Указатели.
0x264 Форматирующие строки.
0x265 Приведение типов.
0x266 Аргументы командной строки.
0x267 Область видимости переменных.
0x270 Сегментация памяти.
0x271 Сегменты памяти в языке С.
0x272 Работа с кучей.
0x273 Функция malkx() с контролем ошибок.
0x280 Дополнение к основам.
0x281 Доступ к файлам.
0x282 Права доступа к файлам.
0x283 Идентификаторы пользователей.
0x284 Структуры.
0x285 Указатели на функции.
0x286 Псевдослучайные числа.
0x287 Азартные игры.
0х300 Эксплуатация уязвимостей.
0x310 Общий принцип эксплуатации уязвимостей.
0x320 Переполнение буфера.
0x321 Уязвимости переполнения буфера через стек.
0х330 Эксперименты с оболочкой BASH.
0x331 Работа с окружением.
0x340 Переполнение в другие сегментах памяти.
0x341 Стандартное переполнение в куче.
0x342 Перезапись указателя на функцию.
0x350 Форматирующие строки.
0x351 Параметры форматирования.
0x352 Уязвимость строк форматирования.
0x353 Чтете из произвольного места в памяти.
0x354 Запись в произвольное место в памяти.
0x355 Прямой доступ к параметрам.
0x356 Запись значений типа short.
0x357 Обход через секцию dtors.
0x358 Еще одна уязвимость в программе notesearch.
0x359 Перезапись глобальной таблицы смещений.
0x400 Сетевые взаимодействия.
0x410 Сетевая модель OSI.
0x420 Сокеты.
0x421 Функции сокетов.
0x422 Адреса сокетов.
0x423 Сетевой порядок байтов.
0x424 Преобразование интернет-адресов.
0x425 Пример простого сервера.
0x426 Пример с веб-клиентом.
0x427 Маленький веб-сервер.
0x430 Спускаемся к нижним слоям.
0x431 Канальный уровень.
0x432 Сетевой уровень.
0x433 Транспортный уровень.
0x440 Анализ сетевого трафика.
0x441 Программа для перехвата raw-сокетов.
0x442 Библиотека libpcap.
0x443 Расшифровка уровней.
0x444 Активный сниффинг.
0x450 Отказ в обслуживали.
0x451 SYN-флуд.
0x452 Атака с помощью пингов смерти.
0x453 Атака teardrop.
0x454 Наводнение запросами.
0x455 Атака с усилением.
0x456 Распределенная DoS-атака.
0x460 Перехват TCP/IP.
0x461 Атака с добавлением бита RST.
0x462 Дополнительные варианты перехвата.
0x470 Сканирование портов.
0x471 Скрытое SYN-сканирование.
0x472 Сканирование с помощью техник FIN, X-mas и Null.
0x473 Фальшивые адреса.
0x474 Метод idle scan.
0x475 Превентивная защита.
0x480 Давайте взломаем что-нибудь.
0x481 Анализ с помощью GDB.
0x482 Почти успех.
0x483 Шелл-код, привязывающий к порту.
0x500 Шелл-код.
0x510 Сравнение ассемблера и С.
0x511 Системные вызовы Linux на языке ассемблера.
0x520 Путь к шелл-коду.
0x521 Инструкции ассемблера для стека.
0x522 Использование GDB.
0x523 Удаление нулевых байтов.
0х630 Код запуска оболочки.
0x531 Вопрос привилегий.
0x532 Дополнительная оптимизация.
0x540 Шелл-код, привязывающий к порту.
0x541 Дублирование стандартных файловых дескрипторов.
0x542 Управляющие структуры ветвлений.
0x550 Шелл-код с обратным подключением.
0x600 Меры противодействия.
0x610 Средства обнаружения атак.
0x620 Системные демоны.
0x621 Обзор сигналов.
0x622 Демон tinyweb.
0x630 Инструментарий.
0x631 Инструмент для эксплуатации уязвимости демона tinywebd.
0x640 Файлы журналов.
0x641 Затеряться в толпе.
0x650 Не видя очевидного.
0x651 Пошаговая инструкция.
0x652 Функционирование демона.
0x653 Дочерний процесс.
0x660 Усиления маскировка.
0x661 Подделка регистрируемого IP-адреса.
0x662 Остаться незарегистрированным.
0x670 Инфраструктура в целом.
0x671 Повторное использование сокетов.
0x680 Контрабанда вредоносного кода.
0x681 Шифрование строк.
0х682 Как скрыть дорожку.
0x690 Ограничения буфера.
0x691 Полиморфный шелл-код из отображаемых символов ASCII.
0хба0 Усиление противодействия.
0х6b0 Неисполняемый стек.
0х6b1 Атака возврата в библиотеку.
0х6b2 Возврат в функцию system().
0х6с0 Рандомизация стека.
0х6с1 Анализ с помощью BASH и GDB.
0х6с2 Возвращение из библиотеки linux-gate.
0х6с3 Практическое применение знаний.
0х6с4 Первая попытка.
0х6с5 Уменьшаем риски.
0x700 Криптология.
0x710 Теория информации.
0x711 Безусловная стойкость.
Ох712 Одноразовые блокноты.
0x713 Квантовое распределение ключей.
0x714 Вычислительная стойкость.
0x720 Время работы алгоритма.
0x721 Асимптотическая нотация.
0x730 Симметричное шифрование.
0x731 Алгоритм Гровера.
0x740 Асимметричное шифрование.
0x741 Алгоритм RSA.
0x742 Алгоритм Шора.
0x750 Гибридные шифры.
0x751 Атака посредника.
0x752 Разница цифровых отпечатков узлов в протоколе SSH.
0x753 Нечеткие отпечатки.
0x760 Взлом паролей.
0x761 Перебор по словарю.
0x762 Атаки с полным перебором.
0х763 Поисковая таблица хэшей.
0x764 Матрица вероятности паролей.
0x770 Шифрование в протоколе беспроводной связи 802.11b.
0x771 Протокол Wired Equivalent Privacy.
0x772 Потоковый шифр RC4.
0x780 Атаки на WEР.
0x781 Полный перебор в автономном режиме.
0x782 Повторное использование потока битов ключа.
0x783 Дешифровка по словарным таблицам IV.
0x784 Переадресация IP.
0x785 Атака Флурера, Мантина, Шамира.
0x800 Заключение.
0x810 Ссылки.
0x820 Источники.
Купить .
По кнопкам выше и ниже «Купить бумажную книгу» и по ссылке «Купить» можно купить эту книгу с доставкой по всей России и похожие книги по самой лучшей цене в бумажном виде на сайтах официальных интернет магазинов Лабиринт, Озон, Буквоед, Читай-город, Литрес, My-shop, Book24, Books.ru.
По кнопке «Купить и скачать электронную книгу» можно купить эту книгу в электронном виде в официальном интернет магазине «Литрес», и потом ее скачать на сайте Литреса.
По кнопке «Найти похожие материалы на других сайтах» можно найти похожие материалы на других сайтах.
On the buttons above and below you can buy the book in official online stores Labirint, Ozon and others. Also you can search related and similar materials on other sites.
Хештеги: #учебник по программированию :: #программирование :: #Эриксон
Смотрите также учебники, книги и учебные материалы:
- Программирование для детей на языке Scratch, Банкрашкова А., 2017
- Глубокое обучение на Python, Шолле Ф., 2018
- Qt 5.10, Профессиональное программирование на C++, Шлее М., 2018
- Чистая архитектура, Искусство разработки программного обеспечения, Мартин Р., 2018
- Head First, Паттерны проектирования, Обновленное юбилейное издание, Фримен Э., Робсон Э., Сьерра К., Бейтс Б., 2018
- Теоретический минимум по Computer Science, Все, что нужно программисту и разработчику, Феррейра Ф.В., 2018
- Теоретический минимум по Big Data, Все, что нужно знать о больших данных, Ын А., Су К., 2019
- Стандартная библиотека C++, Справочное руководство, Джосаттис Н.М., 2014