книги хакеры / Защита_от_взлома_сокеты,_эксплойты,_shell_код_Фостер_Дж_
.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 |
|
|
|
|
|
|
Краткий справочник по системным вызовам 757 |
|
to |
|
|
|
|
|
|
||||
w Click |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
m |
w Click |
|
|
|
|
|
|
|
m |
|||||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
o |
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
. |
|
|
|
|
g |
.c |
|
||||||
|
|
p |
|
|
|
|
|
|
|
|
|
p |
|
-x cha |
|
|
|
||||||
|
|
|
|
-xchграммыa |
и передаваемые ей аргументы. В третьем могут содержаться данные |
|
|
e |
|
||||||||||||||
|
|
|
df |
|
|
n |
e |
|
|
|
|
df |
|
|
n |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
о переменных окружения.
socketcall (номер функции, аргументы)
Системный вызов socketcall имеется только в системе Linux и применяется для вызова таких функций работы с сокетами, как bind, accept и, конечно же, socket. Первый аргумент – это номер нужной функции, а второй – указатель на структуру, содержащую параметры, передаваемые этой функции. Например, если нужно выполнить вызов socket(2,1,6), то первым аргументом будет номер функции socket, а вторым – указатель на структуру, содержащую числа 2, 1, 6. Перечень поддерживаемых функций, их номера и описание параметров можно найти на странице руководства.
socket (адресное семейство, тип, протокол)
Системный вызов socket создает сетевой сокет. Первый аргумент определяет адресное семейство, например, AF_INET (в случае протокола IP), второй – тип сокета. Можно, в частности, создать простой (raw) сокет для отправки в сеть специально подготовленных пакетов. Третий аргумент определяет конкретный протокол, по которому будет вестись обмен данными через этот сокет, например, IP.
bind (дескриптор сокета, структура sockaddr, размер второго аргумента)
Системный вызов bind ассоциирует с сокетом локальный адрес. Первым аргументом должен быть дескриптор сокета, полученный от функции socket, вторым – структура, в которой хранятся тип протокола, номер порта и IP-адрес, к которому привязывается сокет.
listen (дескриптор сокета, максимальный размер очереди соединений)
Привязав сокет к локальному адресу, можно перевести его в режим прослушивания порта, то есть ожидания приходящих на него запросов на соединение. Для этого служит системный вызов listen, которому передается дескриптор, полученный от функции socket, и максимальное число соединений в очереди. Если размер очереди равен 1 и приходит два запроса, первый будет помещен в очередь, а второму будет отказано в обслуживании.
|
|
|
|
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 |
|
|
|
758 Защита от взлома: сокеты, эксплойты и shell#код |
|
|
|
|
to |
|
|
|
|
|
|
||||
w Click |
|
|
|
|
w Click |
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
m |
|||||||||||
|
|
|
|
|
|
|
m |
|
|
|
|
|
|
|
|||||||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
o |
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
. |
|
|
|
|
g |
.c |
|
||||||
|
|
p |
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
e |
|
|
|
|
|
|
|
|
|
e |
|
||||
|
|
|
df |
|
|
n |
|
accept (дескриптор сокета, структура sockaddr, |
df |
|
|
n |
|
|
|
|
|||||||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
размер второго аргумента)
Системный вызов accept позволяет принять запрос на соединение, поступивший в прослушивающий сокет. Вызов возвращает дескриптор нового сокета, через который можно вести обмен данными. Первым аргументом accept должен быть дескриптор, полученный от функции socket, вторым – указатель на структуру sockaddr. Допускается вместо указателя задать NULL, в противном случае в структуру будет помещена информация о клиенте, приславшем запрос. Так можно, к примеру, узнать IP-адрес клиента. Если второй аргумент отличен от NULL, то в третьем должен быть указан размер структуры sockaddr в байтах.