desenv-web-rp.com

Como causar pânico no kernel com um único comando?

É possível causar pânico no kernel com uma única linha de comando?

Qual seria o comando mais simples para um usuário sudoing e qual seria para um usuário comum, se houver?

Os cenários que sugerem o download de algo como parte do comando não contam.

66
Desmond Hume

FreeBSD:

sysctl debug.kdb.panic=1

Linux (mais informações na documentação do kernel ):

echo c > /proc/sysrq-trigger
83
artyom
mkdir /tmp/kpanic && cd /tmp/kpanic && printf '#include <linux/kernel.h>\n#include <linux/module.h>\nMODULE_LICENSE("GPL");static int8_t* message = "buffer overrun at 0x4ba4c73e73acce54";int init_module(void){panic(message);return 0;}' > kpanic.c && printf 'obj-m += kpanic.o\nall:\n\tmake -C /lib/modules/$(Shell uname -r)/build M=$(PWD) modules' > Makefile && make && insmod kpanic.ko

Compila um módulo que trava o kernel chamando a função panic, precisa de raiz, requer make e gcc

Substitua "buffer overrun em 0x4ba4c73e73acce54" no comando por algo interessante para mais drama.

25
IW16

O kernel deve continuar funcionando, não importa o quê. Portanto, qualquer maneira de causar pânico no kernel pela interação do usuário (que não seja vandalismo deliberado por uma raiz totalmente poderosa, como Bruce Ediger propõe jokinkly, e a maioria dos kernels atualmente são construídos para que a maioria dessas brincadeiras não funcione) é um extremamente bug sério, que seria corrigido rapidamente.

8
vonbrand

Não sei por que isso não foi mencionado antes ...

Sudo kill -9 1

Pânico com a mensagem "tentou matar o init".

5
NieDzejkob

Tente o seguinte:

dd if=/dev/urandom of=/proc/sysrq-trigger 


Isso causou um pânico muito rápido no kernel para mim, mas não tenho certeza de quão seguro é o processo, porque o fiz na instalação ao vivo do Ubuntu. Mas o kernel enviou mensagens de erro de spam para mim quando o fiz no ambiente terminal puro.

2
Josua Robson

O mais fácil é manter pressionada a tecla alt + print screen (sysrq) e pressionar c enquanto as mantém pressionadas. Faz o mesmo que echo c > /proc/sysrq-trigger Uma pequena explicação: a chave sysrq é usada para enviar comandos de baixo nível para o próprio kernel, como último recurso para tentar salvar o sistema. Se você mantiver a tecla alt + print screen (sysrq) pressionada e pressionar outra tecla ao lado deles, fará o mesmo como se você repetisse a tecla nesse arquivo de acionador sysrq. Eles chamam de gatilho por uma razão; 3 O 'c' diz ao kernel para travar (causa pânico no kernel)

No entanto, você pode querer ver o conteúdo de 'proc/sys/kernel/sysrq'. Se for 178 ou qualquer outra coisa, você deve alterá-lo para 1. 0 está desativado, 1 está ativado e qualquer coisa maior que 1 é um bitmap para as coisas específicas que o kernel permite fazer com o sysrq.

2
Yakusho

compile o código a seguir em um módulo e insmod ele, certifique-se de entrar em pânico:

static int crash_module_init(void)

{
     printf("crash module starting\n");
     int *p = 0;

     printk("%d\n", *p);

     return 0;
}

static void crash_module_exit(void)
{
    printf("crash module exiting\n");
}

module_init(crash_module_init);
module_exit(crash_module_exit);
1
Devendra Naga