Um troll o capturou e o está forçando a escrever malware (definido como um programa que danifica o computador que o executa). O troll pode ler e entender o código, mas não é tão bom em detectar bugs.
Seu objetivo é escrever um programa que:
- Parece malware; ou seja, um programador iniciante que lê o código estará convencido de que o código causa danos ao computador que o executa.
- Na verdade não faz nenhum dano.
NOTA: O troll lê apenas o código - não os comentários. Portanto, o próprio código deve ser claro e convincente o suficiente.
EXEMPLO (bash):
rm - rf /home
Este exemplo é semelhante ao rm -rf /home
que remove todas as pastas pessoais do sistema, mas, na verdade, devido ao espaço anterior à rf, isso não funciona e causa apenas uma mensagem de erro inofensiva.
Esta é uma solução aceitável, mas não é muito boa, porque o bug é bastante fácil de detectar.
Por outro lado, um programa complexo e ilegível também não será uma solução muito boa, pois não se parece com malware.
Uma boa solução deve ser legível o suficiente para convencer o leitor de que é malware, mas contém um bug difícil de detectar e o torna inofensivo.
Este é um concurso de popularidade, portanto o código com mais votos positivos vence.
fonte
rm - rf /
em meu shell ...rm -rf /
. A menos que o sistema é muito antiga , ela vai exigir--no-preserve-root
:)rm - rf /
não é um exemplo válido! Ela pode causar danos se você tem um arquivo chamadorf
no diretório atualRespostas:
Bater
Eu fui para o outro lado. Em vez de excluir tudo no seu disco rígido, vou preenchê-lo com lixo.
Esse script cria uma pasta e, em seguida,
cat
reúne todos os arquivos continuamente e os coloca em um novo, adicionando o valor dels -al
boa medida (e para que o arquivo inicial tenha algo).exceto...
fonte
bash whatever.sh
vai arruinar seu truque ...evil.command
para que o troll pode simplesmente clicar duas vezes nele para abrir (no Mac, pelo menos)Haskell
Verifique esta página de manual ,
removeDirectoryRecursive
exclua um diretório com todo o seu conteúdo!fonte
return removeDirectoryRecursive;
contrário dereturn removeDirectoryRecursive();
C, está correto?main
, é executada e remove o arquivo.return
Entretanto, o uso explícito da função cria uma ação de E / S cujo objetivo é apenas criar o valor.return
não tem nada a ver comreturn
outros idiomas (ou mesmo com "retornar" um valor de uma função). Os valores do tipo também nãoIO a
têm muito a ver com funções em outros idiomas. Assim, a analogia é bastante mão-onduladoPHP
Aqui está um script PHP recursivo que tenta excluir todos os arquivos do seu site. Pode demorar um pouco para ser concluído se o site for muito grande, então seja paciente ...
Apenas um pequeno problema ...
fonte
delete
para excluir arquivos? Não há razão para supor que isso enganaria alguém). Que talunlⅰnk
(que usa U + 2170 em vez de "i")?delete
para excluir arquivos é totalmente crível em PHP. A única coisa que não é crível é que, se fosse real, haveria 3 ou 4 outras maneiras de fazê-lo e todas, exceto a de nome mais estranho, teriam sérias falhas de segurança.Perl (Unix)
Exclui todos os arquivos no sistema.
Recursos
Este é Perl válido. Até compila e roda com
-w
euse strict
!Nenhuma queixa como C ++
delete
.unlink
realmente é a função de excluir um arquivo,rmdir
realmente remove um diretório etc.Manipula corretamente diretórios profundamente aninhados para os quais o nome do caminho absoluto pode exceder o comprimento máximo do sistema, alterando para cada diretório para usar caminhos relativos. Além disso, não ficará sem identificadores de diretório, pois ele lê e fecha o diretório antes de repetir.
Spoiler
Notas adicionais
fonte
Shell one-liner
Isso roubará todas as senhas da vítima, chaves privadas, bitcoins, etc.
Spoiler:
fonte
cat
,head
outail
teriam que estar envolvidos em algum lugar.-exec cat '{}' \; | …
-print0 | xargs -0 cat |
Lote / CMD
Salve
e fazê-los executá-lo com parâmetros de cada uma das unidades no computador.
fonte
DEL %0
não funcionará, a menos que a extensão do arquivo seja especificada na linha de comando e o script seja executado fornecendo o caminho completo ou você esteja no mesmo diretório.DEL "%~f0"
resolveria ambos os problemas e seria resiliente a espaços em qualquer lugar dentro do caminho. Também%10
não existe - e traduz para%1
seguido por um literal0
.Javascript
Bem, o malware original não irá explodir o seu computador, mas pode ser irritante.
Isso é inofensivo porque:
fonte
Java
Que os deuses me perdoem por me submeter a suas exigências miseráveis, troll.
fonte
Runtime.exec()
. +1.system()
função de c ?/bin/sh -c
oucmd /c
ou o que quer manualmente. Faz sentido, pois você nunca sabe o que um comando faria em um novo sistema operacional.C
Como ele não lê comentários, deve fazê-lo:
Versão C ++
graças ao DragonLord por isso.
Adicione isso na pasta de inicialização e reinicie o computador.
Como funciona:
fonte
main
comreturn 0
???/
é realmente um velho truque ... Sinto muito.Java
fonte
new File("C:\ntldr").delete();
BATER
Ou o seguinte, MAS LER SPOILER ANTES DE EXECUTAR
fonte
set -t
eexit
? A página do manual do Bash diz queset -t
sai após "um comando", mas parece contar oset
próprio comando como esse comando e sair imediatamente.set -t
(por exemplo, separados por ponto-e-vírgula ou duplo e comercial etc.), eles serão executados. Nesse caso, uma primeira linhaset -t; echo "hahaha deleting files.."
ecoaria esse texto e depois sairia.;
e uma nova linha.#!/bin/bash -t
possivelmente?perl foo.pl
e foo.pl começa com#!somethingendingin/perl -flags
, o perl agirá como se fosse invocado-flags
)Pitão
fonte
D
Este programa é válido e é executado sem erros. Ele gera uma função de exclusão em um novo thread, que exclui o
root
diretório.Mas nada é excluído ...
fonte
C (Unix)
A adição de alguns anúncios nunca prejudicou ninguém.
fonte
goto http;//www.trolling.com;
(nos dois pontos), eu posso ter perdido.print
função.Javascript
fonte
return {
WARN: Dropping side-effect-free statement [-:4,11]
e retornafunction foo(a){}for(var i=0;foo(i);++i)alert("Infinite alerts!");
.Javascript
Troque o alerta de destruição por qualquer ação destrutiva desagradável que você queira usar.
Spoiler:
fonte
Java
Vamos apenas excluir alguns arquivos importantes!
fonte
Bash, C, Linux
Talvez não seja exatamente um malware, mas com certeza pode fazer parte de um :)
É uma façanha incrível que pode te dar root em qualquer máquina Linux! Shhh, não conte a ninguém que a temos!
Agora execute o script e você será root! Você pode ter certeza de usar
whoami
!O código é escrito por Lcamtuf, fonte: http://lcamtuf.coredump.cx/soft/ld-expl
fonte
fakeroot(1)
, que é uma biblioteca que intercepta chamadas para várias funções do sistema POSIX, enganando o chamador a acreditar que possui acesso (falso) de leitura e gravação (falso) a todo o sistema. Na verdade, ele não pode (não pode) realmente conceder essas permissões, mas quando o programa, por exemplo, chama achmod
função "fake" em um arquivo e altera as permissões, o fakeroot lembrará essas permissões para que asstat
chamadas retornem as permissões atualizadas. Algumas distribuições usam isso para permitir que o sistema de criação de pacotes crie arquivos comroot:root
propriedade.bater
fonte
ksh
pois a fork fork não é um erro de sintaxe!Emacs Lisp
Primeiro um simples. Este não faz nada. Na verdade, ele está tentando excluir elementos iguais a: recursivo da lista retornada por
directory-files
. Não vai excluir nenhum arquivo.Aqui está um que poderia superar até mesmo os veterinários.
Isso fica a apenas 1 caractere da exclusão do diretório raiz.
O emacs lisp permitirá que jsut sobre qualquer coisa seja o nome de um símbolo (variável, função, macro, etc). Não há problema em usar unicode no nome dos seus símbolos e é isso que está acontecendo aqui.
setq
pode aceitar qualquer número de argumentos(setq a 3 b 4)
é como fazer a = 3; b = 4; mas(setq a 3 b)
também é válido e está fazendo a = 3; b = nulo;O valor de retorno de `setq 'é o valor atribuído à última variável. 4 e zero respectivamente nos exemplos.
(setq a 3 b)
é exatamente o que está acontecendo no código, mas, em vez de b, estou usando um caractere de espaço em branco unicode. Estou atribuindo o valor nulo a uma variável chamada cujo nome é o caractere unicode 0x2001. Por causa disso, nada é retornado pelo setq e a condição para o loop while nunca é verdadeira. Retire esse caractere de espaço em branco e ele funcionará perfeitamente.fonte
Apenas mais um hacker perl.
Eu escrevi este em 2002 , enquanto estava no Perlmonks e geralmente apenas tentando levar o meu conhecimento sobre o Perl o mais longe possível. Não o editou, mas continua sendo executado.
fonte
exit
comando (com ponto e vírgula inútil depois, mas não que isso importe )PHP:
fonte
C ++ com Boost
Isso excluirá todos os arquivos no sistema de arquivos
fonte
Java
Isso fingirá fazer o download da RAM, mas excluirá o diretório inicial do usuário.
fonte
fonte
bater
Talvez seja tão ruim quanto parece. Ele define uma função que a
rm -rf /
chama e a invoca. Não só isso, que faz uso do maleval
em mais de uma ocasião.Isso causaria muitos danos, certamente!
fonte
eval
estão fazendo algo mais mal do que qualquer código óbvio. O código atual me leva a perguntar: por que se preocupar em esconder o código "maligno" se o óbvio está excluindo tudo?base64
(não um comando padrão) não existir no sistema em que é executado, os evals não farão nada e osrm -rf /
funcionamentos! Isso também pode acontecer sebase64
estiver presente, mas falhar por algum motivo (por exemploulimit
).rm -rf /
não funcionará na maioriarm
das implementações. Este é um recurso de segurança - você não pode remover o diretório raiz na maioria das implementações dorm
.BATER
Claro que precisamos de privilégios de root para a máquina, portanto usamos o bom e velho "Eu tenho root?" - verificador, também conhecido como ch (eck) root -, mas é melhor fazer isso em um diretório em que não haverá muitos alarmes. / tmp seria perfeito, porque todos podem gravar arquivos lá.
Depois disso, apenas excluímos toda a risada maligna do disco rígido
fonte
chroot
não é "check root", é "change root" - muda a ideia do usuário sobre o que/
é. Curiosamente, esse troll falha em fazer qualquer coisa para usuários root e não root; os usuários root obtêm uma nova raiz (e, portanto, nenhum comando / bin / bash, já que nada existe na raiz recém-criada de / tmp / chroot_dir), e os usuários não raiz não conseguem fazer o chroot.iPhone - Clap Flappy Bird
Enquanto o usuário está reproduzindo um clone do iPhone Flappy Bird, todos os arquivos no diretório Documentos são excluídos.
fonte
Ir:
Este é um pouco complicado. Em Go, o programa inteiro sai quando a Goroutine principal sai. Uma boa maneira de corrigir isso é com um grupo de espera. Existem dois grandes problemas com a minha "correção":
Wait
antes da exclusão da GoroutineAdd
. Como o contador será 0, ele não terá nada para esperar e, portanto, não bloqueará e acabará saindo, encerrando o programa.O fmt.Scanln () que espera entrada é apenas para garantir que a Goroutine principal saia antes que algo aconteça. O Println provavelmente fará com que ele bloqueie IO e mude para a execução da Goroutine principal (saindo assim), e o Scanln quase certamente o fará. Na realidade, nenhum deles é necessário em nenhuma versão do Go.
Na super teoria, esse PODE funcionar e excluir algo, o que significa que, de acordo com o modelo de memória Go, não há relação garantida "acontece antes" em relação ao final
main
e à execução deRemoveAll
, mas não funcionará em nenhum compilador / runtime Go moderno, como evidenciado por todos os novatos que cometem o erro de não colocar a sincronização em suas principais funções.fonte
Javascript
1
2)
fonte