Para el entretenimiento, decidí iniciar un servidor Linux, luego ejecutar el comando " rm – rf /" como usuario root, y luego observar qué archivos o instrucciones sobrevivirán. ¡El resultado es nada! Así que tiene que agregar — no-preserce-root para volver a intentarlo: # rm -rf --no-preserve-root /
Al presionar " Ingresar ", algunas herramientas importantes como /Bin /ls /bin /cat /bin /chmod /usr /bin /file
desaparecerá! Pero su conexión SSH actual y su terminal bash aún están allí, lo que significa que todas las instrucciones integradas relacionadas con bash no se ven afectadas, como el eco.
Conviértase en Bash Daren root @ rmrf: /# ls-bash: /bin /ls: No existe tal archivo o directorio
Ejecute el comando anterior y descubra que no hay ls disponible, pero echo y fileglobs Todavía Con estos "sobrevivientes", ¿qué podemos hacer? Raíz @ rmrf: /# echo * dev proc run sys # echo /dev /pts /* /dev /pts /0 /dev /pts /3 /dev /pts /ptmx
¡Nota! /dev, /proc, /run, /sys todavía están allí, debemos guardarlos. Si tiene el comando ls, será más fácil leer el contenido del directorio. Root @ rmrf: /# para ii en /dev /pts /*; echo echo $ ii; done /dev /pts /0 /dev /pts /3 /dev /pts /ptmx
Muchos usuarios de Reddit señalan , printf todavía está disponible. CAMH dice: printf formateará los parámetros en la cadena de salida a su vez. Root @ rmrf: /# ls () {printf '% s \\ n' $ {1: + $ {1% /} /} *;}
Ya que podemos definir funciones en bash, entonces podemos Herramienta ls autoconstruida, aunque la función no es perfecta. Raíz @ rmrf: /# ls () {printf '% s \\ n' $ {1: + $ {1% /} /} *;} -bash: error de sintaxis cerca del token inesperado `('
No, esta operación debería ser completamente legal. ¿Ya se asignó ls, o es un alias para otros comandos? Root @ rmrf: /# type lsls tiene un alias de `ls --color = auto '
Por lo tanto, nuestras instrucciones anteriores se han extendido a ls – color = auto () {printf ‘% s \\ n ’ $ {1: + $ {1% /} /} *;}. Así podemos comenzar Use la directiva unalias para eliminar la asociación entre ls y ls — color. Root @ rmrf: /# ls () {for ii in $ 1 /*; do echo $ ii; done} root @ rmrf: /# ls /dev /proc /run /sysroot @ rmrf: /# ls /dev /dev /pts
Almacene la función en el archivo utils.sh root @ rmrf: /# echo 'ls () {for ii in $ 1 /*; echo echo $ Ii; hecho} '> > utils.shroot@rmrf: /# source utils.sh
¿Cómo se implementa el comando cat? Con lectura! Lea uno de los sobrevivientes, usando lectura combinada con tuberías y pesado ¡Orientación, se forma básicamente un gato básico! Root @ rmrf: /# (mientras se lee la línea; haga eco de " $ line "; hecho) < utils.shls () {for ii in $ 1 /*; Echo $ ii; done}
En combinación con el método anterior de "survivor", algunos métodos pueden restaurarse y echo puede escribir cualquier característica de múltiples bytes, podemos reconstruir el sistema de herramientas de Linux. Y puede obtener el binario que queremos directamente a través de curl o wget. En primer lugar, remítase a otros para obtener busybox. Busybox es la navaja suiza para Linux incrustado, wget incrustado, dd, tar y muchas otras herramientas. Eusebe î Cómo obtener una versión escapada de un busybox, no entraré en detalles aquí.
Pero todavía hay un problema.
Incluso si hacemos eco de todos los bytes necesarios para el binario completo, estos archivos binarios no se ejecutarán. No se puede iniciar la casilla de ocupado! La primera solución a este problema fue encontrar algunos programas ejecutables y luego sobrescribirlos con eco. Hemos realizado dichas modificaciones a los archivos en /usr y /bin, pero esto es un poco más complicado.
Puede usar el comodín de shell y bash para filtrar archivos con grupos ejecutables, recuerde excluir el directorio. Ejecutable () {si [[(! -D $ 1) &&-x $ 1]]; luego echo " $ 1 "; fi}
¡Encontré el ejecutable! Raíz @ rmrf: /# para ii en /*; hacer ejecutable $ ii; doneroot @ rmrf: /# para ii en /* /*; hacer ejecutable $ ii; doneroot @ rmrf: /# para ii en /* /* /*; ejecutable $ ii; done /proc /1107 /exe /proc /1136 /exe /proc /1149 /exe /proc /1179 /exe /proc /1215 /exe /proc /1217 /exe /proc /1220 /exe /proc /1221 /exe /proc /1223 /exe /proc /1248 /exe /proc /1277 /exe /proc /1468 /exe /proc /1478 /exe /proc /1625 /exe /proc /1644 /exe /proc /1 /exe /proc /374 /exe /proc /378 /exe /proc /471 /exe /proc /616 /exe /proc /657 /exe /proc /self /exe
¡Genial! Pero no se preocupe, estos son solo archivos de enlace vinculados al ejecutable. El archivo original ya no existe en el disco. Entonces ahora tenemos que reescribir el archivo ejecutable () para excluir estos enlaces blandos. Raíz @ rmrf: /# ejecutable () {si [[(! -D $ 1) &&(! -H $ 1) &&-x $ 1]]; luego echo " $ 1 "; fi} raíz @rmrf: /# for ii in /* /* /*; do ejecutable $ ii; doneroot @ rmrf: /# for ii in /* /* /* /*; do ejecutable $ ii; doneroot @ rmrf: /# for Ii in /* /* /* /* /do; haga ejecutable $ ii; doneroot @ rmrf: /# for ii in /* /* /* /* /* /*; do ejecutable $ ii; done
pérdida, sin salida. Tal vez puedas aprovechar las cosas del nivel del kernel. Después de todo, podemos usar la combinación de teclas Magic Sysrq para reiniciar el busybox. Raíz @ rmrf: /# echo 1 > /proc /sys /kernel /sysrqroot @ rmrf: /# echo " b " > /proc /sysrq-trigger
Hemos estado montando el tigre ahora, viernes Seguiré estudiando. Gracias por su atención, si encuentra una buena manera de obtener grupos ejecutables, hágamelo saber.
ACTUALIZACIÓN: el usuario de Reddi throw_away5046 propone una solución: una solución completa para esto.
Obtenga un cuadro de confianza $ mkdir para arquitectura nativa $ (xxd -p -l 16 /dev /urandom) $ cd $ _ $ apt-get descargue busybox-static $ dpkg -x * .deb. $ alias encode = '{tr -d \\\\ n
Falta el archivo de cabecera ‘ security /pam_modules.h ’ es parte de la versión de des
ifconfig -a Ver toda la información de NIC de Linux ifconfig eth0 down Apague la tarjeta de red et
Nginx versión 0.7.48 desde el principio, el soporte de almacenamiento en caché de Squid una función
VMware tutorial de instalación menor sistemas Linux porque el proyecto tiene qu
Xauth: (stdin): 1: nombre de pantalla incorrecto "LSPPC-Lenny: 1" en "ad
Cómo Linux usa los comandos para generar rebotes SHELL
Tutorial básico de entrada a la programación en red Unix
Cómo hacer falta de espacio en el disco, método de limpieza del disco de Linux
Solucionar comando comando no encontrado error
Consideraciones sobre la partición de Linux
Linux puede usar mencoder para extraer el audio del video.
Bloqueo de aviso obligatorio de bloqueo
Modifique el editor predeterminado de ubuntu para vim
Análisis de puntos clave de la tecnología de clúster del sistema Linux
KVM es mejor que Xen en la integración de Linux
Sistema Linux y resumen de resolución de errores relacionados con php
Win8 a través del método iniciador iSCSI
En el sistema Win8.1 IE11 se bajó a IE10 gráfico tutorial
El nuevo logotipo de Windows8 es "escupir": o causó el "desastre de la marca"
Permita que el calendario de Win8 sincronice automáticamente el calendario de Windows Calendar
CentOS 7 al mando firewall-cmd
Sistema Win10 cómo cambiar el método de entrada predeterminado
Cómo hacer una foto de Meitu Xiu Xiu 1 pulgada ID pulgadas tutorial de producción de fotos
El sistema de Windows 7 desactiva el método del sensor del componente de hardware