Advertisement
NokitaKaze

How to leak HHVM 3.5.1-dev

Mar 9th, 2015
344
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.02 KB | None | 0 0
  1. <?php
  2.     header('Content-type: text/plain; ');
  3.  
  4.     function sad_xml_rawtext_local($buf) {
  5.         $xmlDoc = new DOMDocument('1.0', 'UTF-8');
  6.         echo "\n".__LINE__.' '.(floor(memory_get_usage() / 1024 / 102.4) / 10).'Mb '.
  7.              (floor(memory_get_usage(true) / 1024 / 102.4) / 10).'Mb ';
  8.         $xmlDoc->loadXML($buf);
  9.         echo "\n".__LINE__.' '.(floor(memory_get_usage() / 1024 / 102.4) / 10).'Mb '.
  10.              (floor(memory_get_usage(true) / 1024 / 102.4) / 10).'Mb ';
  11.         $x = $xmlDoc->documentElement;
  12.         echo "\n".__LINE__.' '.(floor(memory_get_usage() / 1024 / 102.4) / 10).'Mb '.
  13.              (floor(memory_get_usage(true) / 1024 / 102.4) / 10).'Mb ';
  14.  
  15.         return $x;
  16.     }
  17.  
  18.     function parse_and_parse(&$buf) {
  19.         $xml = @sad_xml_rawtext_local($buf);
  20.         echo "\n".__LINE__.' '.(floor(memory_get_usage() / 1024 / 102.4) / 10).'Mb '.
  21.              (floor(memory_get_usage(true) / 1024 / 102.4) / 10).'Mb ';
  22.         if (gettype($xml) !== 'object') {
  23.             echo "\nnot a object. exit";
  24.  
  25.             return false;
  26.         }
  27.         unset($xml);
  28.         echo "\n".__LINE__.' '.(floor(memory_get_usage() / 1024 / 102.4) / 10).'Mb '.
  29.              (floor(memory_get_usage(true) / 1024 / 102.4) / 10).'Mb ';
  30.  
  31.         return true;
  32.     }
  33.  
  34.     echo "\n".__LINE__.' '.(floor(memory_get_usage() / 1024 / 102.4) / 10).'Mb '.
  35.          (floor(memory_get_usage(true) / 1024 / 102.4) / 10).'Mb ';
  36.     $buf = file_get_contents('http://img.kanaria.ru/storage/mal-nokitakaze.xml');
  37.     echo "\n".__LINE__.' '.(floor(memory_get_usage() / 1024 / 102.4) / 10).'Mb '.
  38.          (floor(memory_get_usage(true) / 1024 / 102.4) / 10).'Mb ';
  39.  
  40.     for ($i = 0; $i < 10000; $i++) {
  41.         if (!parse_and_parse($buf)) {
  42.             break;
  43.         }
  44.         echo "\n\niteration #{$i} end";
  45.         echo "\n".__LINE__.' '.(floor(memory_get_usage() / 1024 / 102.4) / 10).'Mb '.
  46.              (floor(memory_get_usage(true) / 1024 / 102.4) / 10).'Mb ';
  47.         flush();
  48.     }
  49.  
  50.  
  51.     echo "\ndone";
  52. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement