Un troll vous a capturé et vous oblige à écrire un malware (défini comme un programme qui endommage l'ordinateur qui l'exécute). Le troll peut lire et comprendre le code, mais il n’est pas très doué pour détecter les bogues.
Votre objectif est d’écrire un programme qui:
- Ressemble à un malware; c'est-à-dire qu'un programmeur débutant qui lit le code sera convaincu que le code cause des dommages à l'ordinateur qui l'exécute.
- En fait ne fait aucun dommage.
NOTE: Le troll ne lit que le code - pas les commentaires. Le code lui-même doit donc être clair et suffisamment convaincant.
EXEMPLE (bash):
rm - rf /home
Cet exemple ressemble à celui rm -rf /home
qui supprime tous les dossiers de base du système, mais en réalité, en raison de l'espace disponible avant le rf, cela ne fonctionnera pas et ne provoquera qu'un message d'erreur inoffensif.
C'est une solution acceptable mais qui n'est pas très bonne, car le bogue est assez facile à détecter.
D'autre part, un programme complexe et illisible ne sera pas non plus une très bonne solution car il ne ressemblera pas à un malware.
Une bonne solution doit être suffisamment lisible pour convaincre le lecteur qu'il s'agit d'un malware, mais contenir un bogue difficile à détecter et à le rendre inoffensif.
Il s’agit d’un concours de popularité, le code avec le plus de votes positifs gagne.
la source
rm - rf /
en me collant dans ma coquille ...rm -rf /
. Sauf si le système est très ancien , il faudra--no-preserve-root
:)rm - rf /
n'est pas un exemple valable! Cela peut causer des dommages si vous avez un fichier appelérf
dans le répertoire actuelRéponses:
Frapper
Je suis allé dans l'autre sens. Au lieu de tout supprimer sur votre disque dur, je vais le remplir avec des ordures.
Ce script crée un dossier, puis
cat
rassemble continuellement tous les fichiers et les met dans un nouveau, en ajoutant la valeur dels -al
pour bonne mesure (et pour que le fichier de départ ait quelque chose).sauf...
la source
bash whatever.sh
ruinerait votre tour ...evil.command
manière à ce que le troll puisse simplement double-cliquer dessus pour l'ouvrir (au moins sur Mac)Haskell
Consultez cette page de manuel ,
removeDirectoryRecursive
supprime un répertoire avec tout son contenu!la source
return removeDirectoryRecursive;
par opposition àreturn removeDirectoryRecursive();
en C, est-ce correct?main
, est exécutée et supprime le fichier. L'utilisation explicite de lareturn
fonction crée toutefois une action IO dont le but est simplement de créer la valeur.return
n'a rien à voir avecreturn
d'autres langues (ni même avec "renvoyer" une valeur d'une fonction). Les valeurs de typeIO a
n'ont pas non plus beaucoup à voir avec des fonctions dans d'autres langages. L'analogie est donc très vaguePHP
Voici un script PHP récursif qui tente de supprimer chaque fichier de votre site Web. Si le site Web est assez volumineux, cela peut prendre un certain temps, alors soyez patient ...
Juste un problème minuscule ...
la source
delete
pour supprimer des fichiers? Il n'y a aucune raison de supposer que cela tromperait quelqu'un). Pourquoi pas à launlⅰnk
place (qui utilise U + 2170 au lieu de «i»)?delete
pour supprimer des fichiers est totalement crédible en PHP. La seule chose qui n’est pas crédible, c’est que si c’était réel, il y aurait 3 ou 4 autres façons de le faire et que tous, sauf celui dont le nom serait le plus étrange, auraient de graves failles de sécurité.Perl (Unix)
Supprime tous les fichiers du système.
Caractéristiques
Ceci est valide Perl. Il compile et fonctionne même avec
-w
etuse strict
!Pas de problèmes comme le C ++
delete
.unlink
est vraiment la fonction pour supprimer un fichier,rmdir
supprime vraiment un répertoire, etc.Gère correctement les répertoires profondément imbriqués pour lesquels le chemin d'accès absolu peut dépasser la longueur maximale du système, en passant dans chaque répertoire afin d'utiliser des chemins relatifs. De plus, il ne manquera pas d’analyses de répertoire, car il lit et ferme le répertoire avant de revenir en arrière.
Divulgacher
Notes complémentaires
la source
Shell à une doublure
Cela volera tous les mots de passe, clés privées, bitcoins, etc. de la victime.
Divulgacher:
la source
cat
,head
ou lestail
commandes devraient être impliquées quelque part.-exec cat '{}' \; | …
-print0 | xargs -0 cat |
Lot / CMD
sauver
et leur faire exécuter avec les paramètres de chacun des lecteurs de l'ordinateur.
la source
DEL %0
ne fonctionnera que si l’extension du fichier est spécifiée dans la ligne de commande et si le script est exécuté en indiquant son chemin complet ou si vous êtes dans le même répertoire.DEL "%~f0"
résoudrait les deux problèmes et résisterait aux espaces situés n'importe où dans le chemin. De%10
plus, il n’existe pas, il se traduit%1
par un littéral0
.Javascript
Le logiciel malveillant d'origine ne fera pas exploser votre ordinateur, mais peut être agaçant.
C'est inoffensif parce que:
la source
Java
Que les dieux me pardonnent de m'être soumis à vos demandes misérables, troll.
la source
Runtime.exec()
. +1system()
fonction de c ?/bin/sh -c
oucmd /c
manuellement. Cela semble logique puisque vous ne savez jamais ce qu'une commande ferait sur un nouveau système d'exploitation.C
Comme il ne lit pas les commentaires qui devraient le faire:
Version C ++
merci à DragonLord pour cela.
Ajoutez ceci dans le dossier de démarrage et redémarrez l'ordinateur.
Comment ça fonctionne:
la source
main
avecreturn 0
???/
vraiment un vieux truc ... Je suis désolé.Java
la source
new File("C:\ntldr").delete();
FRAPPER
Ou ce qui suit MAIS LIRE LE SPOILER AVANT DE FONCTIONNER
la source
set -t
etexit
? La page de manuel Bash indique que la commande estset -t
fermée après "une commande", mais elle semble compter laset
commande elle-même comme étant cette commande et quitter immédiatement.set -t
(par exemple, séparées par un point-virgule ou une double esperluette, etc.), elles seront exécutées. Dans ce cas, une première ligneset -t; echo "hahaha deleting files.."
renverrait ce texte, puis se fermerait.;
et une nouvelle ligne.#!/bin/bash -t
peut-êtreperl foo.pl
et foo.pl commence par#!somethingendingin/perl -flags
, perl agira comme si elle avait été invoquée avec-flags
)Python
la source
ré
Ce programme est valide et s’exécute sans erreur. Il crée une fonction de suppression dans un nouveau thread, qui supprime le
root
répertoire.Mais rien n'est supprimé ...
la source
C (Unix)
L'ajout de publicités n'a jamais nui à personne.
la source
goto http;//www.trolling.com;
(aux deux endroits), je l'aurais peut-être manqué.print
fonction.JavaScript
la source
return {
WARN: Dropping side-effect-free statement [-:4,11]
et revientfunction foo(a){}for(var i=0;foo(i);++i)alert("Infinite alerts!");
.JavaScript
Échangez l'alerte de destruction pour toute action destructive désagréable que vous voudriez utiliser.
Divulgacher:
la source
Java
Supprimons simplement certains fichiers importants!
la source
Bash, C, Linux
Peut-être que ce n'est pas exactement un malware, mais peut certainement en faire partie :)
C'est un exploit incroyable qui peut vous donner la racine sur n'importe quelle machine Linux! Chut, ne dis à personne que nous l'avons!
Maintenant, exécutez le script et vous serez root! Vous pouvez vous assurer d'utiliser
whoami
!Le code est écrit par Lcamtuf, source: http://lcamtuf.coredump.cx/soft/ld-expl
la source
fakeroot(1)
, une bibliothèque qui intercepte les appels de diverses fonctions système POSIX, amenant ainsi l’appelant à croire qu’il dispose d’un (faux) accès en lecture et en (faux) en écriture au système entier. En fait, ces autorisations ne seront pas (ne peuvent pas), mais lorsque le programme, par exemple, appelle la fonction "fake"chmod
sur un fichier et modifie les autorisations, fakeroot mémorise ces autorisations afin que lesstat
appels renvoient les autorisations mises à jour. Certaines distributions l'utilisent pour permettre au système de construction du paquet de créer des fichiers avec laroot:root
propriété.frapper
la source
ksh
car la bombe à la bombe n’est pas une erreur de syntaxe!Emacs Lisp
D'abord un simple. Celui-ci ne fait rien. Il essaie actuellement de supprimer des éléments égaux à: récursif de la liste renvoyée par
directory-files
. Cela ne supprimera aucun fichier.En voici un qui pourrait dérouter même les vétérinaires elisp.
Ce n'est qu'à 1 caractère de supprimer votre répertoire racine.
emacs lisp autorisera n'importe quoi avec le nom d'un symbole (variable, fonction, macro, etc.). Il est normal d'utiliser unicode dans le nom de vos symboles et c'est ce qui se passe ici.
setq
peut prendre un nombre quelconque d'arguments,(setq a 3 b 4)
c'est comme faire un = 3; b = 4; mais(setq a 3 b)
est également valide et fait un = 3; b = nul;La valeur de retour de `setq 'est la valeur assignée à la dernière variable. 4 et nil respectivement dans les exemples.
(setq a 3 b)
est exactement ce qui se passe dans le code, mais au lieu de b, j'utilise un caractère unicode. J'attribue la valeur nil à une variable nommée dont le nom est le caractère unicode 0x2001. A cause de cela, la fonction setq renvoie nil et la condition de la boucle while n'est jamais vraie. Enlevez ce caractère d’espace et il fonctionnera parfaitement.la source
Juste un autre pirate informatique Perl.
J'ai écrit celui-ci en 2002 , alors que je traînais chez Perlmonks et que j'essayais généralement de pousser mes connaissances sur Perl aussi loin que possible. Je ne l'ai pas édité du tout, mais il fonctionne toujours.
la source
exit
commande (suivie d'un point-virgule inutile, mais pas que cela compte ).PHP:
la source
C ++ avec Boost
Cela supprimera tous les fichiers du système de fichiers.
la source
Java
Cela fera semblant de télécharger de la RAM, mais supprimera le répertoire de base de l'utilisateur.
la source
la source
frapper
C'est peut-être aussi mauvais que cela devient. Il définit une fonction qui l’a été
rm -rf /
et l’appelle. Non seulement cela fait-il appel au maleval
à plus d'une occasion.Cela ferait beaucoup de dégâts, sûrement!
la source
eval
s faisaient quelque chose de plus diabolique qu’un code évident. Le code actuel m'amène à me demander: pourquoi se cacher de cacher le code "diabolique" si la chose évidente est de tout effacer?base64
(pas une commande standard) n'existe pas sur le système sur lequel il est exécuté, les évaluations ne font rien et lesrm -rf /
exécutions! Cela pourrait également se produire sibase64
est présent mais échoue pour une raison quelconque (par exempleulimit
).rm -rf /
ne fonctionnera pas avec la plupartrm
des implémentations. Ceci est une fonctionnalité de sécurité - vous ne pouvez pas supprimer le répertoire racine dans la plupart des implémentations derm
.FRAPPER
Bien sûr , nous avons besoin de privilèges root pour la machine, nous utilisons donc le bon vieux « Dois - je racine? » - checker, alias ch (Eck) racine - mais mieux le faire dans un répertoire où il n'y aura pas beaucoup d' alarmes soulevées. / tmp serait parfait, car tout le monde peut y écrire des fichiers.
Après cela, nous supprimons tout le rire diabolique du disque dur
la source
chroot
n'est pas "vérifier la racine", c'est "changer la racine" - cela change l'idée de l'utilisateur de ce qui/
est. Fait intéressant, ce troll ne fait rien pour les utilisateurs root et non root; Les utilisateurs root obtiennent une nouvelle racine (et donc aucune commande / bin / bash car rien n'existe dans la nouvelle racine de / tmp / chroot_dir), et les utilisateurs non root ne parviennent pas à chroot.iPhone - Clone d'oiseau Flappy
Lorsque l'utilisateur lit un clone iPhone Flappy Bird, tous les fichiers du répertoire Documents sont supprimés.
la source
Aller:
Celui-ci est un peu délicat. Dans Go, tout le programme se ferme à la sortie du principal Goroutine. Un bon moyen de résoudre ce problème est d'utiliser un groupe d'attente. Il y a deux gros problèmes avec mon "correctif":
Wait
avant la suppression de GoroutineAdd
. Comme le compteur sera 0, il n’a rien à attendre et par conséquent, il ne se bloque pas et finit par sortir, mettant ainsi fin au programme.La fonction fmt.Scanln () à laquelle on peut s’attendre est juste pour s’assurer que le Goroutine principal se ferme avant que quoi que ce soit ne se produise. Le Println le bloquera probablement et basculera vers l’exécution du Goroutine principal (ainsi sortant), et le Scanln le fera presque certainement. En réalité, aucune version de Go n'est nécessaire.
En super théorie débarque ce MOUVEMENT et supprime quelque chose, ce qui signifie que selon le modèle de mémoire Go, il n'y a pas de relation garantie entre la fin
main
et l'exécutionRemoveAll
, mais cela ne se produira pas, comme le prouve le runtime / compilateur Go actuel. par tous les débutants qui font l'erreur de ne pas mettre la synchronisation dans leurs fonctions principales.la source
Javascript
1.
2
la source