Главная страница IT-студия  
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создание сайтов. Авторы: Кузнецов М.В., Симдянов И.В. Головоломки на PHP для хакера (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры . Авторы: Кузнецов М.В., Симдянов И.В. PHP. Народные советы. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование: ступени карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Security & Cracking Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
Консультации от известных специалистов и авторов многих книг

Информационный портал
«SoftTime-INFO»




| Наши книги | Головоломки на PHP для хакера (2 издание)

Головоломки на PHP для хакера (2 издание)

Представляем Вашему вниманию книгу "Головоломки на PHP для хакера", написанную сотрудниками нашей студии Кузнецовым Максимом Валерьевичем и Симдяновым Игорем Вячеславовичем.

Предлагаемая книга является сборником задач по PHP с уклоном в защиту сайта и Web-приложений от злоумышленников.

Основная проблема сайтостроителей заключается в том, что они мыслят совсем другими категориями, нежели злоумышленники. Кроме того, Web-разработчики редко прибегают к тестированию своих разработок на предмет уязвимости, так как им подсознательно не хочется ломать свои собственные Web-приложения. Снять такой настрой поможет эта книга, где, наряду с задачами по защите Web-приложений, будет предложено большое число задач по взлому сайта с применением самых различных технологий от межсайтового скриптинга и SQL-инъекций до подборки паролей при помощи словаря. Это позволит читателю убедиться как легко может быть нарушена работа Web-сайта и как дорого может обернуться беспечность при его разработке.

Наряду с деструктивными задачами будет предложено большое число заданий, направленных на построение обороны сайта. Выполнив задания вы получите в руки мощную системы защиты собственного сайта, которая будет отличаться от коммерческих и свободных аналогов тем, что вы будете знать в ней каждый винтик и сможет легко модернизировать её, быстро устранять последствия взлома и находить уязвимости.

Книга разбита на две части: непосредственно задачник и ответы на задачи, следующие в конце книги. Вы может решать все задачи последовательно или, если перед вами стоят срочные задачи защиты сайта, может воспользоваться готовыми кодами, которые будут поставляться на компакт диске. Содержимое компак-диска можно также загрузить с сайта IT-студии SoftTime по адресу http://www.softtime.ru/security/code_2.zip.

По всем вопросам, которые могут возникнуть по мере чтения материала книги, вы можете обращаться на форум http://www.softtime.ru/forum/). Авторы присутствуют на форуме каждый день и с удовольствием ответят на ваши вопросы.

На сайте также работате раздел "Задачи на PHP", в который регулярно добавляются задачи, не вошедшие в книгу и ответы на них.


Заказать книгу "Головоломки на PHP для хакера" (2 изд.) можно в интернете-магазине ОЗОН.

Доступна также же электронная версия книги в формате PDF.

Страница, посвящённая первому изданию книги "Головоломки на PHP для хакеров".

Страница, посвящённая книге на сайте издательства

Содержание

Оглавление
Введение
Благодарности

Глава I.1. Строки и числа

I.1.1. Количество и имена файлов в произвольном каталоге
I.1.2. Вывод случайного количества символов
I.1.3. Выравнивание по правому краю
I.1.4. Выравнивание по левому и правому краям
I.1.5. Вывод данных в три столбца
I.1.6. Передача массива между двумя страницами
I.1.7. Передача массива методом GET
I.1.8. Передача массива методом POST
I.1.9. Передача массива через сессии
I.1.10. Передача массива через cookie
I.1.11. Вертикальный вывод строки
I.1.12. Число в денежном формате
I.1.13. Упаковка IP-адреса
I.1.14. Календарь
I.1.15. Замена символов bbCode
I.1.16. Преобразование десятичного числа в двоичное и обратно
I.1.17. Возведение числа в степень
I.1.18. Изменение регистра строки
I.1.19. Преобразование арабского числа в римское

Глава I.2. Регулярные выражения

I.2.1. Удаление всех тегов из HTML-страницы
I.2.2. Удаление изображений из HTML-страницы
I.2.3. Преобразование нескольких пробельных символов в один
I.2.4. Извлечение названия HTML-страницы
I.2.5. Конвертация даты из MySQL-формата в календарный формат
I.2.6. Проверка корректности ввода адреса электронной почты
I.2.7. Проверка корректности ввода URL
I.2.8. Подсветка URL
I.2.9. Проверка корректности ввода чисел
I.2.10. Изменение регистра
I.2.11. Разбивка длинной строки
I.2.12. Разбивка HTML-страницы на предложения
I.2.13. Количество слов в тексте
I.2.14. Интерпретация тегов bbCode
I.2.15. Подсветка PHP-кода
I.2.16. Замена подстроки с условием

Глава I.3. Файлы

I.3.1. Загрузка файлов на сервер
I.3.2. Загрузка файла на сервер по частям
I.3.3. Создание файла с уникальным именем
I.3.4. Редактирование файлов на удаленном сервере
I.3.5. Уязвимость скрипта загрузки
I.3.6. Счетчик загрузок
I.3.7. Сохранение текстовых и графических файлов
I.3.8. Определение размера файла
I.3.9. Определение количества строк в файле
I.3.10. Изменение порядка следования строк в файле
I.3.11. Случайный вывод из файла
I.3.12. Редактирование файла
I.3.13. Сортировка содержимого текстового файла
I.3.14. Добавление записи в файл
I.3.15. Постраничная навигация для файла
I.3.16. Самая длинная и самая короткая строка в файле
I.3.17. Вывод из файла списка строк заданной длины
I.3.18. Вывод слов из файла по первым символам
I.3.19. Список файлов и подкаталогов в каталоге
I.3.20. Количество файлов в каталогах
I.3.21. Количество строк в файлах проекта
I.3.22. Замена строки во всех файлах вложенных подкаталогов
I.3.23. Копирование содержимого одного каталога в другой
I.3.24. Удаление каталога
I.3.25. Подсчет объема памяти, занимаемой каталогом
I.3.26. Система регистрации
I.3.27. Случайное изображение из каталога
I.3.28. Определение даты создания изобраения
I.3.29. Взлом гостевой книги

Глава I.4. MySQL

I.4.1. Система регистрации
I.4.2. SQL-инъекция по числовому параметру
I.4.3. Определение версии сервера MySQL
I.4.4. Поиск пользователя — SQL-инъекция
I.4.5. Удаление пользователей при помощи SQL-инъекции
I.4.6. Постраничная навигация
I.4.7. Алфавитная навигация
I.4.8. Сортировка
I.4.9. Двойной выпадающий список
I.4.10. Удаление сразу нескольких позиций
I.4.11. Хранение MP3-файлов в базе данных
I.4.12. Хранение изображений в базе данных
I.4.13. Загрузка данных из дампа базы данных
I.4.14. Шифрование содержимого базы данных

Глава I.5. Протокол HTTP

I.5.1. Загрузка страницы
I.5.2. Получение HTTP-заголовков с сервера
I.5.3. Определение размера файла на удаленном хосте
I.5.4. Отправка данных методом POST
I.5.5. Получение точного времени

Глава I.6. Сессии и cookie

I.6.1. Пользователи Online 49
I.6.2. Собственный механизм сессии 49
I.6.3. Защита HTML-формы при помощи сессии 49
I.6.4. Определение, включены ли cookie у посетителя 50
I.6.5. Фальсификация cookie 50
I.6.6. Обход защищенной сессией HTML-формы 51
I.6.7. Межсайтовый скриптинг 52
I.6.8. Похищение cookie

Глава I.7. Пользовательские агенты и рефереры

I.7.1. Переходы с других сайтов
I.7.2. Защита HTML-формы при помощи реферера
I.7.3. Фальсификация реферера
I.7.4. Ключевые слова поисковых систем
I.7.5. Распознавание посещений сайта роботами поисковых систем
I.7.6. Защита от менеджеров загрузки
I.7.7. Фальсификация пользовательского агента

Глава I.8. Авторизация и аутентификация

I.8.1. Авторизация на файлах
I.8.2. Шифрование пароля
I.8.3. Подбор пароля перебором
I.8.4. Подбор пароля по словарю
I.8.5. Генератор паролей
I.8.6. Защита текстовых файлов от просмотра в браузере
I.8.7. Авторизация при помощи cookie
I.8.8. Защита имени пользователя от подделки
I.8.9. Авторизация при помощи сессий
I.8.10. Шифрование пароля в базе данных
I.8.11. Базовая HTTP-авторизация

Глава I.9. Использование информации со сторонних сайтов

I.9.1. Загрузка страницы с удаленного хоста
I.9.2. Извлечение ссылок с Yandex
I.9.3. Извлечение ссылок с Google
I.9.4. Извлечение ссылок с Rambler
I.9.5. Извлечение ссылок с Aport
I.9.6. Определение курса валют из XML-файла
I.9.7. Определение динамики курса валют
I.9.8. Загрузка новостей со стороннего сайта
I.9.9. Создание новостного RSS-канала

Глава I.10. FTP-протокол

I.10.1. Определение типа операционной системы
I.10.2. Список файлов на FTP-сервере
I.10.3. Загрузка файлов
I.10.4. Изменение прав доступа
I.10.5. Какой объем памяти занимает сайт?
I.10.6. Поиск файлов, чей размер превышает 100 Кбайт
I.10.7. Перенос сайта с одного хоста на другой

Глава I.11. Электронная почта

I.11.1. Отправка почтового сообщения с сайта
I.11.2. Отправка письма с вложением
I.11.3. Массовая рассылка писем
I.11.4. Предотвращение массовой рассылки
I.11.5. Отправка почтового сообщения через SMTP-ретранслятор
I.11.6. Выяснение адресов почтовых ретрансляторов
I.11.7. Подсчет количества писем в почтовом ящике
I.11.8. Чтение заголовков писем
I.11.9. Удаление писем из почтового ящика

Глава I.12. Whois-сервис

I.12.1. Определение принадлежности IP-адресов
I.12.2. Определение принадлежности европейских IP-адресов
I.12.3. Следование реферальному серверу
I.12.4. Определение IP-адреса по сетевому адресу
I.12.5. Определение сетевого адреса по IP-адресу
I.12.6. Выяснение, занят ли домен

Глава I.13. Объектно-ориентированное программирование

I.13.1. Определение класса объекта
I.13.2. Счетчик объектов
I.13.3. Транзакции
I.13.4. Получение копии объекта
I.13.5. Хранение объекта в СУБД MySQL
I.13.6. Постраничная навигация
I.13.7. Создание исключений
I.13.8. Определение версии PHP и расширений
I.13.9. Распознавание загруженных расширений и их версий

Глава I.14. Шпионские скрипты

I.14.1. Слежение за ссылкой на удаленной странице
I.14.2. Проверка ссылочной целостности
I.14.3. Новые файлы на виртуальном хосте
I.14.4. Слишком большие файлы на виртуальном хосте

Глава I.15. Динамические изображения (GDLib)

I.15.1. Счетчик посещений
I.15.2. Несколько изображений на странице
I.15.3. Определение размера изображения
I.15.4. Защитное изображение для HTML-формы
I.15.5. Создание уменьшенной копии
I.15.6. Водяные знаки
I.15.7. Кривая Безье
I.15.8. Построение гистограммы
I.15.9. Построение круговой диаграммы

Глава I.16. Разное

I.16.1. Обмен значений переменных
I.16.2. Скрипт предзагрузки страницы
I.16.3. Использование утилиты ping
I.16.4. Работа с номером узла
I.16.5. Права доступа
I.16.6. Эмуляция утилиты tar
I.16.7. Буферизация данных
I.16.8. Размер страницы
I.16.9. Разгрузка баржи
I.16.10. Продолжительность жизни ученого
I.16.11. Выгода предпринимателя

Глава II.1. Строки и числа

II.1.1. Количество и имена файлов в произвольном каталоге
II.1.2. Вывод случайного количества символов
II.1.3. Выравнивание по правому краю
II.1.4. Выравнивание по левому и правому краям
II.1.5. Вывод данных в три столбца
II.1.6. Передача массива между двумя страницами
II.1.7. Передача массива методом GET
II.1.8. Передача массива методом POST
II.1.9. Передача массива через сессии
II.1.10. Передача массива через cookie
II.1.11. Вертикальный вывод строки
II.1.12. Число в денежном формате
II.1.13. Упаковка IP-адреса
II.1.14. Календарь
II.1.15. Замена символов bbCode
II.1.16. Преобразование десятичного числа в двоичное и обратно
II.1.17. Возведение числа в степень
II.1.18. Изменение регистра строки
II.1.19. Преобразование арабского числа в римское

Глава II.2. Регулярные выражения

II.2.1. Удаление всех тегов из HTML-страницы
II.2.2. Удаление изображений из HTML-страницы
II.2.3. Преобразование нескольких пробельных символов в один
II.2.4. Извлечение названия HTML-страницы
II.2.5. Конвертация даты из MySQL-формата в календарный
II.2.6. Проверка корректности ввода адреса электронной почты
II.2.7. Проверка корректности ввода URL
II.2.8. Подсветка URL
II.2.9. Проверка корректности ввода чисел
II.2.10. Изменение регистра
II.2.11. Разбивка длинной строки
II.2.12. Разбивка текста на предложения
II.2.13. Количество слов в тексте
II.2.14. Интерпретация тегов bbCode
II.2.15. Подсветка PHP-кода
II.2.16. Замена подстроки с условием

Глава II.3. Файлы

II.3.1. Загрузка файлов на сервер
II.3.2. Загрузка файла на сервер по частям
II.3.3. Создание файла с уникальным именем
II.3.4. Редактирование файлов на удаленном сервере
II.3.5. Уязвимость скрипта загрузки
II.3.6. Счетчик загрузок
II.3.7. Сохранение текстовых и графических файлов
II.3.8. Определение размера файла
II.3.9. Определение количества строк в файле
II.3.10. Изменение порядка следования строк в файле
II.3.11. Случайный вывод из файла
II.3.12. Редактирование файла
II.3.13. Сортировка содержимого текстового файла
II.3.14. Добавление записи в файл
II.3.15. Постраничная навигация
II.3.16. Самая длинная и самая короткая строка в файле
II.3.17. Вывод из файла списка строк заданной длины
II.3.18. Вывод слов из файла по первым символам
II.3.19. Список файлов и подкаталогов в каталоге
II.3.20. Количество файлов в каталогах
II.3.21. Количество строк в файлах проекта
II.3.22. Замена строки во всех файлах вложенных подкаталогов
II.3.23. Копирование содержимого одного каталога в другой
II.3.24. Удаление каталога
II.3.25. Подсчет объема памяти, занимаемой каталогом
II.3.26. Система регистрации
II.3.27. Случайное изображение из каталога
II.3.28. Определение даты создания изображения
II.3.29. Взлом гостевой книги

Глава II.4. MySQL и SQL-инъекции

II.4.1. Система регистрации
II.4.2. SQL-инъекция по числовому параметру
II.4.3. Определение версии сервера MySQL
II.4.4. Поиск пользователя — SQL-инъекция
II.4.5. Удаление пользователей при помощи SQL-инъекции
II.4.6. Постраничная навигация
II.4.7. Алфавитная навигация
II.4.8. Сортировка
II.4.9. Двойной выпадающий список
II.4.10. Удаление сразу нескольких позиций
II.4.11. Хранение MP3-файлов в базе данных
II.4.12. Хранение изображений в базе данных
II.4.13. Загрузка данных из дампа базы данных
II.4.14. Шифрование содержимого базы данных

Глава II.5. Протокол HTTP

II.5.1. Загрузка страницы
II.5.2. Получение HTTP-заголовков с сервера
II.5.3. Определение размера файла на удаленном хосте
II.5.4. Отправка данных методом POST
II.5.5. Получение точного времени

Глава II.6. Сессии и cookie

II.6.1. Пользователи Online
II.6.2. Собственный механизм сессии
II.6.3. Защита HTML-формы при помощи сессии
II.6.4. Определение, включены ли cookie у посетителя
II.6.5. Фальсификация cookie
II.6.6. Обход защищенной сессией HTML-формы
II.6.7. Межсайтовый скриптинг
II.6.8. Похищение cookie

Глава II.7. Пользовательские агенты и рефереры

II.7.1. Переходы с других сайтов
II.7.2. Защита HTML-формы при помощи реферера
II.7.3. Фальсификация реферера
II.7.4. Ключевые слова поисковых систем
II.7.5. Распознавание посещений сайта роботами поисковых систем
II.7.6. Защита от менеджеров загрузки
II.7.7. Фальсификация пользовательского агента

Глава II.8. Авторизация и аутентификация

II.8.1. Авторизация на файлах
II.8.2. Шифрование пароля
II.8.3. Подбор пароля перебором
II.8.4. Подбор пароля по словарю
II.8.5. Генератор паролей
II.8.6. Защита текстовых файлов от просмотра в браузере
II.8.7. Авторизация при помощи cookie
II.8.8. Защита имени пользователя от подделки
II.8.9. Авторизация при помощи сессий
II.8.10. Шифрование пароля в базе данных
II.8.11. Базовая HTTP-авторизация

Глава II.9. Использование информации со сторонних сайтов

II.9.1. Загрузка страницы с удаленного хоста
II.9.2. Извлечение ссылок с Yandex
II.9.3. Извлечение ссылок с Google
II.9.4. Извлечение ссылок с Rambler
II.9.5. Извлечение ссылок с Aport
II.9.6. Определение курса валют из XML-файла
II.9.7. Определение динамики курса валют
II.9.8. Загрузка новостей со стороннего сайта
II.9.9. Создание новостного RSS-канала

Глава II.10. FTP-протокол

II.10.1. Определение типа операционной системы
II.10.2. Список файлов на FTP-сервере
II.10.3. Загрузка файлов
II.10.4. Изменение прав доступа
II.10.5. Какой объем памяти занимает сайт?
II.10.6. Поиск файлов, чей размер превышает 100 Кбайт
II.10.7. Перенос сайта с одного хоста на другой

Глава II.11. Электронная почта

II.11.1. Отправка почтового сообщения с сайта
II.11.2. Отправка письма с вложением
II.11.3. Массовая рассылка писем
II.11.4. Предотвращение массовой рассылки
II.11.5. Отправка почтового сообщения через SMTP-ретранслятор
II.11.6. Выяснение адресов почтовых ретрансляторов
II.11.7. Подсчет количества писем в почтовом ящике
II.11.8. Чтение заголовков писем
II.11.9. Удаление писем из почтового ящика

Глава II.12. Whois-сервис

II.12.1. Определение принадлежности IP-адресов
II.12.2. Определение принадлежности европейских IP-адресов
II.12.3. Следование реферальному серверу
II.12.4. Определение IP-адреса по сетевому адресу
II.12.5. Определение сетевого адреса по IP-адресу
II.12.6. Выяснение, занят ли домен

Глава II.13. Объектно-ориентированное программирование

II.13.1. Определение класса объекта
II.13.2. Счетчик объектов
II.13.3. Транзакции
II.13.4. Получение копии объекта
II.13.5. Хранение объекта в СУБД MySQL
II.13.6. Постраничная навигация
II.13.7. Создание исключений
II.13.8. Определение версии PHP и расширений
II.13.9. Распознавание загруженных расширений и их версии

Глава II.14. Шпионские скрипты

II.14.1. Слежение за ссылкой на удаленной странице
II.14.2. Проверка ссылочной целостности
II.14.3. Новые файлы на виртуальном хосте
II.14.4. Слишком большие файлы на виртуальном хосте

Глава II.15. Динамические изображения (GDLib)

II.15.1. Счетчик посещений
II.15.2. Несколько изображений на странице
II.15.3. Определение размера изображения
II.15.4. Защитное изображение для HTML-формы
II.15.5. Создание уменьшенной копии
II.15.6. Водяные знаки
II.15.7. Кривая Безье
II.15.8. Построение гистограммы
II.15.9. Построение круговой диаграммы

Глава II.16. Разное

II.16.1. Обмен значений переменных
II.16.2. Скрипт предзагрузки страницы
II.16.3. Использование утилиты ping
II.16.4. Работа с номером узла
II.16.5. Права доступа
II.16.6. Эмуляция утилиты tar
II.16.7. Буферизация данных
II.16.8. Размер динамической страницы
II.16.9. Разгрузка баржи
II.16.10. Продолжительность жизни ученого
II.16.11. Выгода предпринимателя

Заключение

Приложение 1. Регулярные выражения

П1.1. Синтаксис регулярных выражений
П1.2. Функции для работы с регулярными выражениями
П1.2.1. Функция preg_grep()
П1.2.2. Функция preg_match()
П1.2.3. Функция preg_match_all()
П1.2.4. Функция preg_quote()
П1.2.5. Функция preg_replace()
П1.2.6. Функция preg_replace_callback()
П1.2.7. Функция preg_split()

Русская версия English

 
  Rambler's Top100 Яндекс.Метрика Яндекс цитирования