Оглавление Введение 1
Благодарности 2
Часть I. ЗАДАЧИ 3
Глава I.1. Строки 5
I.1.1. Количество и имена файлов в произвольном каталоге 5
I.1.2. Выравнивание по правому краю 5
I.1.3. Выравнивание по левому и правому краям 7
I.1.4. Вывод данных в три столбца 7
I.1.5. Передача массива между двумя страницами 8
I.1.6. Передача массива методом GET 8
I.1.7. Передача массива методом POST 8
I.1.8. Передача массива через сессии 8
I.1.9. Передача массива через cookies 8
I.1.10. Календарь 9
I.1.11. Вертикальный вывод строки 9
I.1.12. Число в денежном формате 10
I.1.13. Замена символов bbCode 10
Глава I.2. Регулярные выражения 11
I.2.1. Удаление всех тегов из HTML-страницы 11
I.2.2. Удаление изображений из HTML-страницы 12
I.2.3. Извлечение названия HTML-страницы 12
I.2.4. Конвертация даты из MySQL-формата в календарный формат 12
I.2.5. Проверка корректности ввода адреса электронной почты 12
I.2.6. Проверка корректности ввода URL 13
I.2.7. Подсветка URL 13
I.2.8. Проверка корректности ввода чисел 13
I.2.9. Изменение регистра 13
I.2.10. Разбивка длинной строки 14
I.2.11. Разбивка HTML-страницы на предложения 14
I.2.12. Количество слов в тексте 14
I.2.13. Интерпретация тегов bbCode 14
I.2.14. Подсветка PHP-кода 15
Глава I.3. Файлы 16
I.3.1. Загрузка файлов на сервер 16
I.3.2. Редактирование файлов на удаленном сервере 17
I.3.3. Уязвимость скрипта загрузки 17
I.3.4. Счетчик загрузок 18
I.3.5. Сохранение текстовых и графических файлов 19
I.3.6. Определение размера файла 19
I.3.7. Определение количества строк в файле 19
I.3.8. Изменение порядка следования строк в файле 20
I.3.9. Список файлов и подкаталогов в каталоге 20
I.3.10. Количество файлов в каталогах 20
I.3.11. Количество строк в файлах проекта 21
I.3.12. Замена строки во всех файлах вложенных подкаталогов 21
I.3.13. Загрузка файла на сервер по частям 21
I.3.14. Удаление каталога 21
I.3.15. Случайный вывод из файла 22
I.3.16. Редактирование файла 22
I.3.17. Сортировка содержимого текстового файла 22
I.3.18. Добавление записи в файл 23
I.3.19. Постраничная навигация 23
I.3.20. Система регистрации 23
I.3.21. Случайный вывод из файла 24
I.3.22. Определение даты создания изображения 24
I.3.23. Копирование содержимого одного каталога в другой 24
I.3.24. Взлом гостевой книги 24
Глава I.4. MySQL 26
I.4.1. Система регистрации 26
I.4.2. SQL-инъекция по числовому параметру 28
I.4.3. Определение версии сервера MySQL 29
I.4.4. Поиск пользователя — SQL-инъекция 29
I.4.5. Удаление пользователей при помощи SQL-инъекции 31
I.4.6. Постраничная навигация 33
I.4.7. Алфавитная навигация 35
I.4.8. Сортировка 36
I.4.9. Двойной выпадающий список 37
I.4.10. Удаление сразу нескольких позиций 37
I.4.11. Хранение MP3-файлов в базе данных 38
I.4.12. Хранение изображений в базе данных 39
I.4.13. Загрузка данных из дампа базы данных 40
Глава I.5. Сессии и cookies 41
I.5.1. Пользователи OnLine 41
I.5.2. Собственный механизм сессии 42
I.5.3. Защита HTML-формы при помощи сессии 42
I.5.4. Определение, включены ли cookie у посетителя 43
I.5.5. Подделка cookie 43
I.5.6. Обход защищенной сессией HTML-формы 44
I.5.7. Межсайтовый скриптинг 45
I.5.8. Похищение cookie 47
Глава I.6. Пользовательские агенты и рефереры 48
I.6.1. Переходы с других сайтов 48
I.6.2. Защита HTML-формы при помощи реферера 49
I.6.3. Фальсификация реферера 50
I.6.4. Ключевые слова поисковых систем 50
I.6.5. Распознавание посещений сайта роботами поисковых систем 50
I.6.6. Защита от менеджеров загрузки 50
I.6.7. Фальсификация пользовательского агента 51
Глава I.7. Авторизация и аутентификация 52
I.7.1. Авторизация на файлах 53
I.7.2. Шифрование пароля 54
I.7.3. Подбор пароля 55
I.7.4. Подбор пароля по словарю 55
I.7.5. Генератор паролей 56
I.7.6. Защита текстовых файлов от просмотра в браузере 56
I.7.7. Авторизация при помощи cookie 57
I.7.8. Защита имени пользователя от подделки 59
I.7.9. Авторизация при помощи сессий 60
I.7.10. Шифрование пароля в базе данных 62
I.7.11. Базовая HTTP-авторизация 62
Глава I.8. Использование информации со сторонних сайтов 63
I.8.1. Загрузка страницы с удаленного хоста 64
I.8.2. Извлечение ссылок с Yandex 64
I.8.3. Извлечение ссылок с Google 65
I.8.4. Извлечение ссылок с Rambler 66
I.8.5. Извлечение ссылок с Aport 67
I.8.6. Определение курса валют из XML-файла 68
I.8.7. Определение динамики курса валют 69
Глава I.9. FTP-протокол 72
I.9.1. Определение типа операционной системы 72
I.9.2. Список файлов на FTP-сервере 72
I.9.3. Загрузка файлов 73
I.9.4. Изменение прав доступа 73
Глава I.10. Протокол HTTP 74
I.10.1. Загрузка страницы 74
I.10.2. Получение HTTP-заголовков с сервера 75
I.10.3. Определение размера файла на удаленном хосте 75
I.10.4. Отправка данных методом POST 75
Глава I.11. Электронная почта 77
I.11.1. Отправка почтового сообщения с сайта 77
I.11.2. Отправка письма с вложением 77
I.11.3. Массовая рассылка писем 77
I.11.4. Предотвращение массовой рассылки 78
I.11.5. Отправка почтового сообщения через SMTP-ретранслятор 78
I.11.6. Выяснение адресов почтовых ретрансляторов 78
Глава I.12. Whois-сервис 79
I.12.1. Определение принадлежности IP-адресов 79
I.12.2. Определение принадлежности европейских IP-адресов 79
I.12.3. Следование реферальному серверу 80
I.12.4. Определение IP-адреса по сетевому адресу 81
I.12.5. Определение сетевого адреса по IP-адресу 81
I.12.6. Выяснение, занят ли домен 81
Глава I.13. Операционная система UNIX 82
I.13.1. Использование утилиты ping 82
I.13.2. Работа с номером узла 82
I.13.3. Права доступа 83
I.13.4. Работа с архивами 83
Глава I.14. Шпионские скрипты 84
I.14.1. Слежение за ссылкой на удаленной странице 84
I.14.2. Проверка ссылочной целостности 84
I.14.3. Новые файлы на виртуальном хосте 85
I.14.4. Слишком большие файлы на виртуальном хосте 85
Глава I.15. Разное 86
I.15.1. Обмен значений переменных 86
I.15.2. Скрипт предзагрузки страницы 86
I.15.3. Эмуляция утилиты tar 87
I.15.4. Буферизация данных 87
Часть II. РЕШЕНИЯ 89
Глава II.1. Строки 91
II.1.1. Количество и имена файлов в произвольном каталоге 91
II.1.2. Выравнивание по правому краю 95
II.1.3. Выравнивание по левому и правому краям 96
II.1.4. Вывод данных в три столбца 97
II.1.5. Передача массива между двумя страницами 99
II.1.6. Передача массива методом GET 100
II.1.7. Передача массива методом POST 102
II.1.8. Передача массива через сессии 103
II.1.9. Передача массива через cookies 104
II.1.10. Календарь 106
II.1.11. Вертикальный вывод строки 109
II.1.12. Число в денежном формате 110
II.1.13. Замена символов bbCode 110
Глава II.2. Регулярные выражения 113
II.2.1. Удаление всех тегов из HTML-страницы 113
II.2.2. Удаление изображений из HTML-страницы 115
II.2.3. Извлечение названия HTML-страницы 116
II.2.4. Конвертация даты из MySQL-формата в календарный 117
II.2.5. Проверка корректности ввода адреса электронной почты 118
II.2.6. Проверка корректности ввода URL 120
II.2.7. Подсветка URL 121
II.2.8. Проверка корректности ввода чисел 121
II.2.9. Изменение регистра 122
II.2.10. Разбивка длинной строки 124
II.2.11. Разбивка текста на предложения 124
II.2.12. Количество слов в тексте 128
II.2.13. Интерпретация тегов bbCode 131
II.2.14. Подсветка PHP-кода 132
Глава II.3. Файлы 136
II.3.1. Загрузка файлов на сервер 136
II.3.2. Редактирование файлов на удаленном сервере 138
II.3.3. Уязвимость скрипта загрузки 140
II.3.4. Счетчик загрузок 144
II.3.5. Сохранение текстовых и графических файлов 147
II.3.6. Определение размера файла 148
II.3.7. Определение количества строк в файле 150
II.3.8. Изменение порядка следования строк в файле 150
II.3.9. Список файлов и подкаталогов в каталоге 151
II.3.10. Количество файлов в каталогах 152
II.3.11. Количество строк в файлах проекта 154
II.3.12. Замена строки во всех файлах вложенных подкаталогов 156
II.3.13. Загрузка файла на сервер по частям 157
II.3.14. Удаление каталога 159
II.3.15. Случайный вывод из файла 160
II.3.16. Редактирование файла 161
II.3.17. Сортировка содержимого текстового файла 162
II.3.18. Добавление записи в файл 167
II.3.19. Постраничная навигация 168
II.3.20. Система регистрации 170
II.3.21. Случайный вывод из файла 175
II.3.22. Определение даты создания изображения 175
II.3.23. Копирование содержимого одного каталога в другой 176
II.3.24. Взлом гостевой книги 177
Глава II.4. MySQL и SQL-инъекции 180
II.4.1. Система регистрации 180
II.4.2. SQL-инъекция по числовому параметру 183
II.4.3. Определение версии сервера MySQL 188
II.4.4. Поиск пользователя — SQL-инъекция 189
II.4.5. Удаление пользователей при помощи SQL-инъекции 195
II.4.6. Постраничная навигация 197
II.4.7. Алфавитная навигация 200
II.4.8. Сортировка 203
II.4.9. Двойной выпадающий список 205
II.4.10. Удаление сразу нескольких позиций 211
II.4.11. Хранение MP3-файлов в базе данных 213
II.4.12. Хранение изображений в базе данных 216
II.4.13. Загрузка данных из дампа базы данных 221
Глава II.5. Сессии и cookies 222
II.5.1. Пользователи OnLine 222
II.5.2. Собственный механизм сессии 225
II.5.3. Защита HTML-формы при помощи сессии 230
II.5.4. Определение, включены ли cookie у посетителя 232
II.5.5. Подделка cookie 233
II.5.6. Обход защищенной сессией HTML-формы 235
II.5.7. Межсайтовый скриптинг 238
II.5.8. Похищение cookie 240
Главa II.6. Пользовательские агенты и рефереры 241
II.6.1. Переходы с других сайтов 241
II.6.2. Защита HTML-формы при помощи реферера 243
II.6.3. Фальсификация реферера 244
II.6.4. Ключевые слова поисковых систем 246
II.6.5. Распознавание посещений сайта роботами поисковых систем 247
II.6.6. Защита от менеджеров загрузки 249
II.6.7. Фальсификация пользовательского агента 249
Глава II.7. Авторизация и аутентификация 251
II.7.1. Авторизация на файлах 251
II.7.2. Шифрование пароля 256
II.7.3. Подбор пароля 260
II.7.4. Подбор пароля по словарю 267
II.7.5. Генератор паролей 269
II.7.6. Защита текстовых файлов от просмотра в браузере 270
II.7.7. Авторизация при помощи cookie 271
II.7.8. Защита имени пользователя от подделки 278
II.7.9. Авторизация при помощи сессий 279
II.7.10. Шифрование пароля в базе данных 282
II.7.11. Базовая HTTP-авторизация 283
Глава II.8. Использование информации со сторонних сайтов 286
II.8.1. Загрузка страницы с удаленного хоста 286
II.8.2. Извлечение ссылок с Yandex 287
II.8.3. Извлечение ссылок с Google 289
II.8.4. Извлечение ссылок с Rambler 295
II.8.5. Извлечение ссылок с Aport 297
II.8.6. Определение курса валют из XML-файла 298
II.8.7. Определение динамики курса валют 301
Глава II.9. FTP-протокол 305
II.9.1. Определение типа операционной системы 305
II.9.2. Список файлов на FTP-сервере 307
II.9.3. Загрузка файлов 310
II.9.4. Изменение прав доступа 312
Главa II.10. Протокол HTTP 314
II.10.1. Загрузка страницы 314
II.10.2. Получение HTTP-заголовков с сервера 318
II.10.3. Определение размера файла на удаленном хосте 320
II.10.4. Отправка данных методом POST 321
Главa II.11. Электронная почта 324
II.11.1. Отправка почтового сообщения с сайта 324
II.11.2. Отправка письма с вложением 326
II.11.3. Массовая рассылка писем 329
II.11.4. Предотвращение массовой рассылки 331
II.11.5. Отправка почтового сообщения через SMTP-ретранслятор 333
II.11.6. Выяснение адресов почтовых ретрансляторов 334
Главa II.12. Whois-сервис 336
II.12.1. Определение принадлежности IP-адресов 336
II.12.2. Определение принадлежности европейских IP-адресов 337
II.12.3. Следование реферальному серверу 338
II.12.4. Определение IP-адреса по сетевому адресу 341
II.12.5. Определение сетевого адреса по IP-адресу 342
II.12.6. Выяснение, занят ли домен 342
Глава II.13. Операционная система UNIX 350
II.13.1. Использование утилиты ping 350
II.13.2. Работа с номером узла 352
II.13.3. Права доступа 353
II.13.4. Работа с архивами 357
Главa II.14. Шпионские скрипты 359
II.14.1. Слежение за ссылкой на удаленной странице 359
II.14.2. Проверка ссылочной целостности 366
II.14.3. Новые файлы на виртуальном хосте 369
II.14.4. Слишком большие файлы на виртуальном хосте 371
Главa II.15. Разное 373
II.15.1. Обмен значений переменных 373
II.15.2. Скрипт предзагрузки страницы 374
II.15.3. Эмуляция утилиты tar 375
II.15.4. Буферизация данных 378
ПРИЛОЖЕНИЯ 381
Приложение 1
. Вопросы взлома и безопасности, напрямую не связанные с кодированием 383
Что такое прокси-сервер и зачем он нужен? 383
Классификация прокси-серверов 383
Анонимные прокси-серверы 386
Настройка браузера Internet Explorer для работы с прокси-сервером 389
Как построить цепочку из прокси-серверов? 390
Что такое port mapping? 392
Прокси-серверы и DNS-серверы 392
PAC-файлы 393
Где взять списки бесплатных прокси-серверов? 394
Зачем нужны постоянные обновления списков прокси-серверов? 395
Почему бесплатные прокси-серверы исчезают? 395
Проверка работоспособности прокси-серверов 396
Полезные ссылки 398
Приложение 2. Преступность в IT 400
Виды преступлений в IT-отрасли 400
Глава 28 УК РФ 409
Спрашивайте — отвечаем 413
Приложение 3
. Введение в социальное программирование или кто такие социальные хакеры 418
Несколько примеров 418
Психология = программирование 422
Социальное программирование 422
Трансактный анализ 423
Введение в НЛП 437
Заключение или как стать социальным программистом 448
Приложение 4. Описание компакт-диска 450
Предметный указатель 451
X Оглавление IX Оглавление