Как мой / bin / ls -l Shellcode работает с нулевыми байтами? - PullRequest
0 голосов
/ 17 марта 2019

Я пытаюсь выполнить Shellcode с функцией execve вместе с аргументами команд, т. Е. '/ Bin / ls -l'. Что я знаю, так это то, что шелл-код не может работать должным образом, если в нем есть нулевые байты.

Но мой шелл-код имеет нулевые байты, когда я помещаю аргумент -l в стек, и он работает просто отлично. Почему?

08048060 <_start>:
                                       ;Pushing /x00
8048060:       31 c0                   xor    eax,eax
8048062:       50                      push   eax

8048063:       68 6e 2f 6c 73          push   0x736c2f6e  ;Pushing //bin/ls
8048068:       68 2f 2f 62 69          push   0x69622f2f
804806d:       89 e3                   mov    ebx,esp
804806f:       50                      push   eax
8048070:       89 e2                   mov    edx,esp
8048072:       50                      push   eax
8048073:       68 2d 6c 00 00          push   0x6c2d    ; Pushing '-l' which has null bytes
8048078:       89 e6                   mov    esi,esp
804807a:       50                      push   eax
804807b:       56                      push   esi
804807c:       53                      push   ebx
804807d:       89 e1                   mov    ecx,esp
804807f:       b0 0b                   mov    al,0xb
8048081:       cd 80                   int    0x80

1 Ответ

3 голосов
/ 17 марта 2019

Shell-коды могут содержать нулевые байты, если вектор, который помещает их в исполняемый буфер, допускает их.
Наиболее известным вектором является однобайтовая копия строки с нулевым символом в конце (например, strcpy), в таком случае aнулевой байт будет обозначать конец исходной строки, тем самым предотвращая копирование полного шелл-кода.
Однако, если операция копирования имеет фиксированную длину (например, структурированный протокол) или не использует однобайтовую строку (например, utf)- *) тогда нулевой байт не может прервать копирование раньше.

Конечно, если вы запускаете свой шелл-код, так как это была отдельная программа, вы вообще пропускаете этап копирования, и никаких особых действий не требуется.

...