Advertisement
Guest User

garbadge code (that works)

a guest
Sep 4th, 2019
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.75 KB | None | 0 0
  1. <?php
  2. $ResultCode="OK";
  3.  
  4. $type = 0;
  5. if(isset($_GET["c"]))
  6. {
  7.     if(is_numeric($_GET["c"]))
  8.     {
  9.         $type = (int)$_GET["c"];
  10.     }
  11. }
  12.  
  13.  
  14. function startsWith ($string, $startString)
  15. {
  16.     $len = strlen($startString);
  17.     if(substr($string, 0, $len) === $startString)
  18.     {
  19.         return true;
  20.     }
  21.     else
  22.     {
  23.         return false;
  24.     }
  25. }
  26.  
  27. function read_ini_value(string $ini, string $category, string $key)
  28. {
  29.     $stats = fopen($ini, "r");
  30.  
  31.        
  32.     do{
  33.         $line = fgets($stats);
  34.         if(feof($stats))
  35.         {
  36.             fclose($stats);
  37.             return false;
  38.         }
  39.     }
  40.     while($line != "[".$category."]\n");
  41.        
  42.     do{
  43.         $line = fgets($stats);
  44.        
  45.         if(startsWith($line,"["))
  46.         {
  47.             fclose($stats);
  48.             return "";
  49.         }
  50.         if(feof($stats))
  51.         {
  52.             fclose($stats);
  53.             return "";
  54.         }
  55.     }
  56.     while(!startsWith($line,$key));
  57.     $values = explode("=",$line);
  58.     fclose($stats);
  59.    
  60.     return str_replace("\n","",$values[1]);
  61. }
  62.  
  63. function write_ini_value(string $ini, string $category, string $key, string $value)
  64. {
  65.     $sz = filesize($ini);
  66.     $stats = fopen($ini, "r+");
  67.  
  68.        
  69.     do{
  70.         $line = fgets($stats);
  71.         if(feof($stats))
  72.         {
  73.             fclose($stats);
  74.             return false;
  75.         }
  76.     }
  77.     while($line != "[".$category."]\n");
  78.        
  79.     do{
  80.         $line = fgets($stats);
  81.        
  82.         if(startsWith($line,"["))
  83.         {
  84.             fclose($stats);
  85.             return false;
  86.         }
  87.         if(feof($stats))
  88.         {
  89.             fclose($stats);
  90.             return false;
  91.         }
  92.     }
  93.     while(!startsWith($line,$key));
  94.    
  95.     $curPos = ftell($stats);
  96.    
  97.     $remaining = $sz - $curPos;
  98.     $after = fread($stats,$remaining);
  99.    
  100.     $nextPos = $curPos-strlen($line);
  101.    
  102.     fseek($stats,$nextPos,SEEK_SET);
  103.     fwrite($stats,$key."=".$value."\n");
  104.     fwrite($stats,$after);
  105.    
  106.     fclose($stats);
  107.     return true;
  108. }
  109.  
  110. function get_poll_result(string $country)
  111. {
  112.     //Get Total Vote Count
  113.     $TotalVotes = 0;
  114.     for($i = 1; $i<=6; $i++)
  115.     {
  116.         $TotalVotes += (int)read_ini_value("stats.ini",$country,$i);
  117.     }
  118.    
  119.     $WWAnswer = "";
  120.     for($i = 1; $i<=6; $i++)
  121.     {
  122.         $WWA = (int)read_ini_value("stats.ini",$country,$i);
  123.         if($WWA != 0 || $TotalVotes != 0)
  124.         {
  125.             $WWA = (int)floor(($WWA / $TotalVotes)*100);
  126.         }
  127.         $WWAnswer .= (string)$i."_".(string)$WWA;
  128.         if($i != 6)
  129.         {
  130.             $WWAnswer .= ",";
  131.         }
  132.     }
  133.     return $WWAnswer;
  134. }
  135. switch($type)
  136. {
  137.     case 5: //survey entry
  138.     $country = "";
  139.     $key = 0;
  140.     $character = 0;
  141.    
  142.     //Read "f"
  143.     if(isset($_GET["f"]))
  144.     {
  145.         if(is_string($_GET["f"]))
  146.         {
  147.             $country = $_GET["f"];
  148.         }
  149.         else
  150.         {
  151.             $ResultCode="ERROR";
  152.             break;
  153.         }
  154.     }
  155.     else
  156.     {
  157.         $ResultCode="ERROR";
  158.         break;
  159.     }
  160.    
  161.     //Read "e"
  162.     if(isset($_GET["e"]))
  163.     {
  164.         if(is_numeric($_GET["e"]))
  165.         {
  166.             $key = (int)$_GET["e"];
  167.         }
  168.         else
  169.         {
  170.             $ResultCode="ERROR";
  171.             break;
  172.         }
  173.     }
  174.     else
  175.     {
  176.         $ResultCode="ERROR";
  177.         break;
  178.     }
  179.    
  180.     //Read "a"
  181.     if(isset($_GET["a"]))
  182.     {
  183.         if(is_numeric($_GET["a"]))
  184.         {
  185.             $character = $_GET["a"];
  186.         }
  187.         else
  188.         {
  189.             $ResultCode="ERROR";
  190.             break;
  191.         }
  192.     }
  193.     else
  194.     {
  195.         $ResultCode="ERROR";
  196.         break;
  197.     }
  198.    
  199.     // Sanitize user input (no exploit for u)
  200.     if($character < 1 || $character > 6)
  201.     {
  202.         $ResultCode="ERROR";
  203.         break;
  204.     }
  205.     if($key != 2)
  206.     {
  207.         $ResultCode="ERROR";
  208.         break;
  209.     }
  210.     if(!($country == "NA" || $country == "EU" || $country == "JP" || $country == "AO"))
  211.     {
  212.         $ResultCode="ERROR";
  213.         break;
  214.     }
  215.    
  216.     // Write new statistics (finally)
  217.     if(!file_exists("stats.ini")) //initalize
  218.     {
  219.         $stats = fopen("stats.ini", "w+");
  220.         fwrite($stats,"[JP]\n");
  221.         for($i = 1;$i<=6;$i++)
  222.         {
  223.             fwrite($stats,(string)$i."=0\n");
  224.         }
  225.        
  226.         fwrite($stats,"[NA]\n");
  227.         for($i = 1;$i<=6;$i++)
  228.         {
  229.             fwrite($stats,(string)$i."=0\n");
  230.         }
  231.        
  232.         fwrite($stats,"[EU]\n");
  233.         for($i = 1;$i<=6;$i++)
  234.         {
  235.             fwrite($stats,(string)$i."=0\n");
  236.         }
  237.        
  238.         fwrite($stats,"[AO]\n");
  239.         for($i = 1;$i<=6;$i++)
  240.         {
  241.             fwrite($stats,(string)$i."=0\n");
  242.         }
  243.         fclose($stats);
  244.     }
  245.    
  246.     $value = read_ini_value("stats.ini",$country,(string)$character);
  247.     if($value == "")
  248.     {
  249.         error_log("Read_Ini_Failed!".$country.$character);
  250.         $ResultCode="ERROR";
  251.         break;
  252.     }
  253.     $newVal = (int)$value+1;
  254.     $ret = write_ini_value("stats.ini",$country,(string)$character,(string)$newVal);
  255.     if($ret == false)
  256.     {
  257.         error_log("Write_Ini_Failed!");
  258.         $ResultCode="ERROR";
  259.         break;
  260.     }
  261.    
  262.     //Get Poll Results
  263.     $JPAnswer = get_poll_result("JP");
  264.     $NAAnswer = get_poll_result("NA");
  265.     $EUAnswer = get_poll_result("EU");
  266.     $AOAnswer = get_poll_result("AO");
  267.    
  268.     break;
  269.    
  270.     default: //unimplemented - just say success
  271.     $ResultCode="OK";
  272.     break;
  273. }
  274.    
  275.  
  276.  
  277. $output= Array(
  278.     "ResultCode" => $ResultCode
  279. );
  280. if(isset($JPAnswer))
  281. {
  282.     $output["JPAnswer"] = $JPAnswer;
  283. }
  284. if(isset($NAAnswer))
  285. {
  286.     $output["NAAnswer"] = $NAAnswer;
  287. }
  288. if(isset($EUAnswer))
  289. {
  290.     $output["EUAnswer"] = $EUAnswer;
  291. }
  292. if(isset($AOAnswer))
  293. {
  294.     $output["AOAnswer"] = $AOAnswer;
  295. }
  296.  
  297. echo(urldecode(http_build_query($output)));
  298.  
  299.  
  300. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement