TL; DR Hayır,% 100 güvenli değilsiniz. Ya da başka bir deyişle iki kere düşün. ;)
Temel bilgileri anlamadan kod parçacıklarını yürütme. Bir komut veya program hakkında daha fazla bilgi için man
kullanın. Anlamadıysanız Google veya başka bir arama portalını kullanın. Ve hala şüphe ediyorsanız, sadece kodu çalıştırmayın.
Bana güveniyor musun? Sonra koş:
man man
Tamam, tehlikeli değil, man
adlı kullanıcının adam sayfasını görüyorsunuz
Peki ya aşağıdaki kod ne olacak, bana güveniyor musunuz?
$(perl -MMIME::Base64 -0777ne 'print decode_base64($_)' <<< "ZWNobyAnQk9PSCEnCg==")
değil mi? İyi bir fikir. Kodu bozalım:
-
perl
Perl dili yorumlayıcısı
-
-MMIME::Base64
base64 dizgilerini kodlama ve kod çözme
-
-0777ne
-0777
- Satır ayırıcıyı undef olarak değiştirerek, dosyayı temizlememize ve tüm satırları bir seferde Perl'e beslememize izin verir.
-e
- (execute) bayrağı, komut satırında çalıştırmak istediğimiz Perl kodunu belirtmemizi sağlayan şeydir.
-n
- Girişi Perl satırına satır olarak verin.
-
'print decode_base64($_)'
- Bir dize kodu çözülür, dize $_
'de kaydedilir.
-
"ZWNobyAnQk9PSCEnCg=="
- Ve bu? Bu nedir?
Bir test başlayalım.
Biliyoruz, base64 gibi bir şey ve kodlanmış görünüyor. Bu nedenle dizeyi şu şekilde çözün:
base64 --decode <<< "ZWNobyAnQk9PSCEnCg=="
Ve çıktı… Tamam, gerçekten tehlikeli değil:
echo 'BOOH!'
Şimdi, aynısını perl ile yapabiliriz
perl -MMIME::Base64 -0777ne 'print decode_base64($_)' <<< "ZWNobyAnQk9PSCEnCg=="
Ve çıktı, ne sürpriz:
echo 'BOOH!'
Ama bu tehlikeli miydi? Bu tehlikeli:
$(…)
Bu yapı, komutların çıktısını yuvarlak parantez içinde yürütür.
Hadi deneyelim, bana güvenir misin?
$(perl -MMIME::Base64 -0777ne 'print decode_base64($_)' <<< "ZWNobyAnQk9PSCEnCg==")
'BOOH!'
Ve ne hakkında
c3VkbyBraWxsYWxsIG5hdXRpbHVzCg==
Deneyin… Bana güvenir misin?