книги хакеры / журнал хакер / специальные выпуски / Специальный выпуск 52_Optimized
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
t |
|
|
F |
|
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
|
i |
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
r |
||||
P |
|
|
|
|
|
NOW! |
o |
P |
|
|
|
|
|
NOW! |
o |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
BUY |
|
|
|
|
|
|
|
BUY |
|
|
||||||||
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
to |
|
|
|
|
|
|
||
w Click |
|
|
|
|
|
|
m |
w Click |
|
|
|
|
|
|
m |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
o |
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
. |
|
|
|
|
g |
.c |
|
||||||
|
|
p |
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
df |
|
|
n |
e |
|
|
|
|
df |
|
|
n |
e |
|
||||||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
Закладка Options окна восстановления данных |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
котором хранится информация о последних изменениях |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
данных. Только после этого можно приступать к восстанов- |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
лению работы сервера на новом винчестере, и данные бу- |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
дут восстановлены полностью. |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
ОРИГИНАЛЬНОСТЬ - СЕСТРА ХАКЕРА |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
Недавно я открыл для себя решение, отличное с точки |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
зрения резервирования. Хотя это не совсем резервное ко- |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
пирование, но оно решает задачу именно резервирования |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
данных. В современных базах данных есть возможность |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
репликации данных - мощная штука, принцип работы кото- |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
рой продемонстрирую на примере. |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
Допустим, у нас есть два удаленных офиса, в каждом из |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
которых происходит массовая нагрузка на сервер данных. |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Можно расположить один сервер в главном офисе, а вто- |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
рой будет обращаться к базе через интернет. Но это доста- |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
точно большая нагрузка на сеть с точки зрения трафика, и |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
скорость доступа не высока. Намного эффективнее распо- |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
ложить два сервера в каждом из офисов, а потом серверы |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
данных будут синхронизироваться. Процесс синхрониза- |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
ции как раз и называется репликацией. |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
А что если в эту систему поставить еще один сервер, кото- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
рый тоже будет участвовать в репликации, но не будет ис- |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
пользоваться в работе? Получится реальный сервер, кото- |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
рый будет железной резервной копией. Будут проблемы - |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
можно в считанные секунды превратить резервный сервер в |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
рабочий, и он будет содержать реально работающие данные. |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Правда, свежатина этих данных зависит от настроек реплика- |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
ции (как восстановление от настроек резервирования). |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
ИТОГО |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
От потери данных никто не застрахован, а они регуляр- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
но теряются и причин для этого много: выход из строя обо- |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
рудования, воровство техники, стихийные бедствия, пожа- |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
ры, терроризм, алкоголизм, каннибализм и хакеризм. Как |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
видишь, причин очень много. Конечно же, вероятность |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
возникновения некоторых из них слишком мала, но она |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
есть. А если сложить все вместе, то общая вероятность по- |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
тери данных становится высокой настолько, что можно |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
глубоко задуматься об этом. |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
Так почему же большинство из нас не задумывается о |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
возможных проблемах, пока сами не столкнутся с ними? |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Виновником, как всегда, является простая человеческая |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
лень, с которой надо бороться. |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
Необходимо делать все, чтобы данные ни в коем случае |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
не были утеряны бесследно и чтобы затраты на восстанов- |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
ление были минимальны. Мы постарались показать тебе |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
самое интересное из теории резервирования и восстанов- |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
ления. Практика и нюансы зависят от конкретной СУБД, но |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
это уже нюансы. E |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
t |
|
|
F |
|
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
|
i |
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
r |
||||
P |
|
|
|
|
|
NOW! |
o |
P |
|
|
|
|
|
NOW! |
o |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
BUY |
|
|
|
|
|
|
|
BUY |
|
|
||||||||
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
to |
|
|
|
|
|
|
||
w Click |
|
|
|
|
|
|
m |
w Click |
|
|
|
|
|
|
m |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
o |
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
. |
|
|
|
|
g |
.c |
|
||||||
|
|
p |
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
df |
|
|
n |
e |
|
|
|
|
df |
|
|
n |
e |
|
||||||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
Перебор числа столбцов |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Возможные последствия SI |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Пробелы в запросе взломщик может |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
заменить на /**/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
СИТУАЦИЯ 1 |
не будет 0. Подобный способ был ис- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
Левый запрос возвращает лишь |
пользован в эксплойте для одной из |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
числовое значение. Что-то вроде |
версий phpBB. |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
SELECT code FROM artciles WHERE id = |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
$id. Что будет делать хакер? Средства |
СИТУАЦИЯ 2 |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
MySQL позволяют проводить различ- |
SQL Injection находится в середине |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
ные действия над строками, к приме- |
SQL-запроса. Например: SELECT code |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
ру, выделение подстроки, склеивание |
FROM artciles WHERE id = $id AND |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
нескольких строк в одну, перевод из |
blah='NO' AND active='Y' LIMIT 10. Äëÿ |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
CHAR в INT и т.п. Благодаря этим |
правильной эксплуатации хакер прос- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
функциям хакер имеет возможность |
то откомментирует идущий следом за |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
выудить интересующую его информа- |
Injection код, то есть к вставляемому |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
цию по одному символу. К примеру, |
коду добавит /* или --. Пробелы в зап- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
требуется достать пароль из таблицы |
росе взломщик может заменить на |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
admins, используя приведенный вы- |
/**/, что полезно в случае если |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
ше запрос. Чтобы получить ASCII-код |
скрипт фильтрует пробелы. |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
первого символа пароля, сделаем |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
следующий запрос к скрипту: |
СИТУАЦИЯ 3 |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
http://127.0.0.1/read.php?cid=1+union+select+ASCII(SUBSTRING(pa |
Случается и такое, что в PHP-коде |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
ssword,1,1))+from+admins. Функция SUB- |
подряд идет несколько SQL-запросов, |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
STRING(name,$a,$b) в MySQL выделя- |
подверженных Injection. И все они ис- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
ет $b символов из значения столбца |
пользуют переменную, в которую зло- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
name начиная с символа под номером |
умышленник вставляет SQL-код. Нап- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
$a. Функция ASCII($x) возвращает |
ример (опускаю PHP): |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
ASCII-код символа $x. Для получения |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
последующих символов следует прос- |
$result=mysql_query("SELECT article_id, article_title |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
то менять второй параметр функции |
FROM articles where category_id=$cid"); |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
SUBSTRING до тех пор, пока ответом |
//php code here |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
» |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Часть SQL-запроса |
|
|
|
|
|
|
|
|
|
|
|
|