TL; DR Nie, nie jesteś w 100% bezpieczny. Lub innymi słowy, zastanów się dwa razy. ;)
Nie wykonuj fragmentów kodu bez zrozumienia podstaw. Użyj, man
aby dowiedzieć się więcej o poleceniu lub programie. Jeśli nie rozumiesz, skorzystaj z Google lub innego portalu wyszukiwania. A jeśli nadal masz wątpliwości, po prostu nie wykonuj kodu.
Ufasz mi? Następnie uruchomić:
man man
Ok, nie niebezpieczne, widzisz stronę podręcznika użytkownika man
Ale co z poniższym kodem, czy mi ufasz?
$(perl -MMIME::Base64 -0777ne 'print decode_base64($_)' <<< "ZWNobyAnQk9PSCEnCg==")
Nie? Dobry pomysł. Podzielmy kod:
perl
Tłumacz języka Perl
-MMIME::Base64
Kodowanie i dekodowanie ciągów base64
-0777ne
-0777
- Zmienia separator linii na undef, pozwalając nam na zaśmiecenie pliku, dostarczając wszystkie linie do Perla za jednym razem.
-e
- Flaga (wykonaj) pozwala nam określić kod Perla, który chcemy uruchomić bezpośrednio w linii poleceń.
-n
- Wprowadź dane wejściowe do Perla linia po linii.
'print decode_base64($_)'
- Dekoduje ciąg, ciąg zostaje zapisany $_
.
"ZWNobyAnQk9PSCEnCg=="
- I to? Co to jest?
Zacznijmy test.
Wiemy, że jest to coś w rodzaju base64 i wygląda na zakodowane. Dlatego dekoduj ciąg za pomocą:
base64 --decode <<< "ZWNobyAnQk9PSCEnCg=="
A wynik jest… ok, niezbyt niebezpieczny:
echo 'BOOH!'
Teraz możemy zrobić to samo z perlem
perl -MMIME::Base64 -0777ne 'print decode_base64($_)' <<< "ZWNobyAnQk9PSCEnCg=="
Rezultatem jest, co za niespodzianka:
echo 'BOOH!'
Ale czy to było niebezpieczne? To jest niebezpieczne:
$(…)
Ta konstrukcja wykonuje dane wyjściowe poleceń w nawiasach okrągłych.
Spróbujmy, wierzysz mi?
$(perl -MMIME::Base64 -0777ne 'print decode_base64($_)' <<< "ZWNobyAnQk9PSCEnCg==")
„BOOH!”
A o co chodzi
c3VkbyBraWxsYWxsIG5hdXRpbHVzCg==
Wypróbuj ... Ufasz mi?