TL; DRไม่คุณไม่ปลอดภัย 100% หรือด้วยคำอื่นคิดสองครั้ง ;)
อย่าเรียกใช้ข้อมูลโค้ดโดยไม่เข้าใจพื้นฐาน ใช้man
เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับคำสั่งหรือโปรแกรม ใช้ Google หรือพอร์ทัลการค้นหาอื่นถ้าคุณไม่เข้าใจ และหากคุณยังสงสัยอยู่อย่าเพิ่งเรียกใช้งานรหัส
คุณเชื่อฉันไหม? จากนั้นเรียกใช้:
man man
ตกลงไม่อันตรายคุณเห็นหน้าคนของ man
แต่สิ่งที่เกี่ยวกับรหัสด้านล่างคุณเชื่อฉัน
$(perl -MMIME::Base64 -0777ne 'print decode_base64($_)' <<< "ZWNobyAnQk9PSCEnCg==")
ไม่? ความคิดที่ดี. ขอแบ่งรหัส:
perl
ล่ามภาษา Perl
-MMIME::Base64
การเข้ารหัสและถอดรหัสสตริงเบส 64
-0777ne
-0777
- เปลี่ยนตัวคั่นบรรทัดเป็น undef ทำให้เราสามารถเขียนไฟล์โดยป้อนบรรทัดทั้งหมดเป็น Perl ได้ในครั้งเดียว
-e
- ธง (รัน) เป็นสิ่งที่ช่วยให้เราสามารถระบุรหัส Perl ที่เราต้องการเรียกใช้ในบรรทัดคำสั่ง
-n
- ป้อนข้อมูลเข้าสู่ Perl บรรทัดต่อบรรทัด
'print decode_base64($_)'
- $_
ถอดรหัสสตริงสตริงจะถูกบันทึกไว้ใน
"ZWNobyAnQk9PSCEnCg=="
- และนี่? นี่คืออะไร?
มาเริ่มการทดสอบกัน
เรารู้ว่ามันคล้าย base64 และมันดูเข้ารหัสแล้ว ดังนั้นถอดรหัสสตริงด้วย:
base64 --decode <<< "ZWNobyAnQk9PSCEnCg=="
และผลลัพธ์คือ…ตกลงไม่เป็นอันตรายจริงๆ:
echo 'BOOH!'
ตอนนี้เราสามารถทำเช่นเดียวกันกับ perl
perl -MMIME::Base64 -0777ne 'print decode_base64($_)' <<< "ZWNobyAnQk9PSCEnCg=="
และผลลัพธ์ก็คือสิ่งที่น่าประหลาดใจ:
echo 'BOOH!'
แต่มันอันตรายไหม สิ่งนี้เป็นอันตราย:
$(…)
โครงสร้างนี้เรียกใช้งานเอาต์พุตของคำสั่งในเครื่องหมายวงเล็บเหลี่ยม
ลองดูสิคุณเชื่อใจฉันไหม
$(perl -MMIME::Base64 -0777ne 'print decode_base64($_)' <<< "ZWNobyAnQk9PSCEnCg==")
'BOOH!
และเกี่ยวกับอะไร
c3VkbyBraWxsYWxsIG5hdXRpbHVzCg==
ลองดู…คุณเชื่อใจฉันไหม