যতক্ষণ পড়া এই , আমি দেখেছি নিম্নলিখিত কাজে লাগান:
% cp /usr/bin/id ~
% chmod -x ~/id
% ls -al ~/id
-rw-r--r-- 1 edd edd 22020 2012-08-01 15:06 /home/edd/id
% ~/id
zsh: permission denied: /home/edd/id
% /lib/ld-linux.so.2 ~/id
uid=1001(edd) gid=1001(edd) groups=1001(edd),1002(wheel)
এই স্নিপেটটি দেখায় যে আমরা সাধারণ অপ্রত্যাশিত ব্যবহারকারী হিসাবে ফাইল সিস্টেমের নির্বাহের অনুমতিগুলি তুচ্ছভাবেই পার্শ্ববর্তী করতে পারি। আমি এটি একটি উবুন্টু 12.04 এ চালিয়েছি।
লিনাক্স লোডার ফাইল (1) অনুসারে একটি ভাগ করা বস্তু হিসাবে এটির একটি এন্ট্রি পয়েন্ট রয়েছে যা এটি সরাসরি সম্পাদন করতে দেয়। এইভাবে কার্যকর করা হলে লিনাক্স লোডার ELF বাইনারিগুলির জন্য দোভাষী হিসাবে কাজ করে।
আমার ওপেনবিএসডি মেশিনে, তবে, এই শোষণ কার্যকর নয়, কারণ আপনি কোনও প্রোগ্রাম হিসাবে লোডার কার্যকর করতে পারেন না। ওপেনবিএসডি ম্যানুয়াল পৃষ্ঠাটি বলে: "ld.so নিজেই একটি ভাগ করা অবজেক্ট যা প্রাথমিকভাবে কার্নেল দ্বারা লোড করা হয়েছে"।
সোলারিস 9 এ এটি ব্যবহার করে দেখুন এবং আপনি একটি সেগফল্ট পাবেন। আমি নিশ্চিত নই যে অন্য কোথাও কী ঘটে।
আমার প্রশ্নগুলি তাই:
- কেন ELF বাইনারি ব্যাখ্যা করার আগে লিনাক্স লোডার (সরাসরি মৃত্যুদন্ড কার্যকর করা হয়) ফাইল সিস্টেমের বৈশিষ্ট্যগুলি পরীক্ষা করে না ?
- যদি এমন কোনও প্রক্রিয়া কেন প্রয়োগ করা হয় যা ফাইলগুলির সম্পাদনাকে মঞ্জুরি দেয় না, যদি এটি এত তুচ্ছভাবে পক্ষপাতহীন হয়? আমি কিছু মিস করেছি?
libc
(আমি একবার করেছিলাম, একটি আর্চ বাক্স আপগ্রেড করেছি), আপনি এই সামান্য বিচক্ষণতার জন্য কৃতজ্ঞ হবেন।