find / directory -type f -newermt "2014-10-08 10:17:00"! -newermt "08.10.2014 10:53:00"
Есть несколько возможностей, все в зависимости от точных параметров вашей ситуации прямо сейчас. Я собираюсь использовать Linux в следующих примерах, где это применимо, но аналогичная функциональность в большинстве случаев существует и на других платформах.
Вы можете заставить динамический загрузчик запустить исполняемый файл для вас. Предполагая, что cat
динамически -связан, эквивалент вашей платформы /lib/ld-linux.so.2
, вероятно, также будет находиться в памяти и, таким образом, может использоваться для запуска двоичного файла :
$ /lib64/ld-linux-x86-64.so.2./chmod
chmod: missing operand
У вас может быть несколько из этих (32 -и 64 -бит, вероятно ), и может быть несколько доступных копий или символических ссылок, которые необходимо разрешить. Один из них может сработать.
Если у вас смонтирована файловая система vfat или NTFS,или другой, который обрабатывает все файлы как 777, вы можете создать там свой исполняемый файл.
$ cat > /mnt/windows/chmod < /dev/tcp/localhost/9999
Если есть смонтированный раздел, содержимое которого вам не нужно, на диске, который все еще в основном работает, вы можете заменить его содержимое новым образом того же типа файловой системы, содержащим исполняемые файлы, которые вы хотите -cat
. отлично подходит для этой роли, для которой люди обычно используют dd
, и вы можете предоставить изображение по сети.
$ cat > /dev/sdb1 <...
Это правдоподобно, но есть много мест, которые не работают, в зависимости от того, что именно все еще находится в памяти из этого раздела.
Если есть какой-либо доступный файл, который имеет разрешение на выполнение в любой доступной для записи файловой системе, вы можете cat >
в него заменить содержимое двоичным файлом по вашему выбору.
$ cat > ~/test.py <...
ctypes.sh
, который предоставляет внешний функциональный интерфейс для Bash, а затем dlcall chmod./netcat 511
. Вы можете принести файл динамической библиотеки foo.so
вашей конструкции, а затем cat
загрузить его от вашего имени посредством LD_PRELOAD
, что позволит вам выполнять произвольный код.
$ LD_PRELOAD=./hack.so cat /dev/null
Если перехватить, например,open
:
int open(const char *path, int flags,...) {
chmod(path, 0755);
return -1;
}
тогда вы можете делать там все, что вам нужно.
Я бы предложил добавить статически -связанный busybox
исполняемый файл в качестве первого элемента (или, на самом деле, единственного элемента ), чтобы у вас был полный набор доступных команд без повторного использования чего-либо. взлом довел вас до истощения.