Advertisement
81gl-ntd

Write up-Natas lv 10-11

Nov 12th, 2014
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.17 KB | None | 0 0
  1. Source:
  2.  
  3. <?
  4.  
  5. $defaultdata = array( "showpassword"=>"no", "bgcolor"=>"#ffffff");
  6.  
  7. function xor_encrypt($in) {
  8. $key = '<censored>';
  9. $text = $in;
  10. $outText = '';
  11.  
  12. // Iterate through each character
  13. for($i=0;$i<strlen($text);$i++) {
  14. $outText .= $text[$i] ^ $key[$i % strlen($key)];
  15. }
  16.  
  17. return $outText;
  18. }
  19.  
  20. function loadData($def) {
  21. global $_COOKIE;
  22. $mydata = $def;
  23. if(array_key_exists("data", $_COOKIE)) {
  24. $tempdata = json_decode(xor_encrypt(base64_decode($_COOKIE["data"])), true);
  25. if(is_array($tempdata) && array_key_exists("showpassword", $tempdata) && array_key_exists("bgcolor", $tempdata)) {
  26. if (preg_match('/^#(?:[a-f\d]{6})$/i', $tempdata['bgcolor'])) {
  27. $mydata['showpassword'] = $tempdata['showpassword'];
  28. $mydata['bgcolor'] = $tempdata['bgcolor'];
  29. }
  30. }
  31. }
  32. return $mydata;
  33. }
  34.  
  35. function saveData($d) {
  36. setcookie("data", base64_encode(xor_encrypt(json_encode($d))));
  37. }
  38.  
  39. $data = loadData($defaultdata);
  40.  
  41. if(array_key_exists("bgcolor",$_REQUEST)) {
  42. if (preg_match('/^#(?:[a-f\d]{6})$/i', $_REQUEST['bgcolor'])) {
  43. $data['bgcolor'] = $_REQUEST['bgcolor'];
  44. }
  45. }
  46.  
  47. saveData($data);
  48.  
  49. ?>
  50.  
  51.  
  52. $data["showpassword"] == "yes"
  53.  
  54. daa được lấy thông qua hàm loadData
  55.  
  56. hàm load data được gọi từ cookie
  57.  
  58. => $data được lấy từ biến data của cookie
  59.  
  60. Tóm tắt:
  61. B0: Tìm input của hàm xor bằng câu lệnh php:
  62.  
  63. echo json_encode(array( "showpassword"=>"no", "bgcolor"=>"#ffffff"));
  64.  
  65. ra: input = showpassword"=>"no", "bgcolor"=>"#ffffff
  66.  
  67. B1: Ta xem cookie của trang bằng cookie manager +: ta có: ClVLIh4ASCsCBE8lAxMacFMZV2hdVVotEhhUJQNVAmhSEV4sFxFeaAw%3D
  68.  
  69. Lưu ý: ? và = sẽ được thay đổi thành to %3F and %3D dẫn tới đoạn cookie:
  70.  
  71. ClVLIh4ASCsCBE8lAxMacFMZV2hdVVotEhhUJQNVAmhSEV4sFxFeaAw=
  72.  
  73.  
  74. B2: Ta encode base 64 kết hợp với xor đoạn cookie ở trên để tìm giá trị xor:
  75.  
  76. có đoạn code bằng python:
  77.  
  78. import base64
  79. plain = '{"showpassword":"no","bgcolor":"#ffffff"}'
  80. xored = base64.b64decode('ClVLIh4ASCsCBE8lAxMacFMZV2hdVVotEhhUJQNVAmhSEV4sFxFeaAw=')
  81.  
  82. for i in range(len(xored)):
  83. print hex(ord(xored[i]) ^ ord(plain[i]))
  84.  
  85.  
  86. ra:
  87. 0x71
  88. 0x77
  89. 0x38
  90. 0x4a
  91. 0x71
  92. 0x77
  93. 0x38
  94. 0x4a
  95. 0x71
  96. 0x77
  97. 0x38
  98. 0x4a
  99. 0x71
  100. 0x77
  101. 0x38
  102. 0x4a
  103. 0x71
  104. 0x77
  105. 0x38
  106. 0x4a
  107. 0x71
  108. 0x77
  109. 0x38
  110. 0x4a
  111. 0x71
  112. 0x77
  113. 0x38
  114. 0x4a
  115. 0x71
  116. 0x77
  117. 0x38
  118. 0x4a
  119. 0x71
  120. 0x77
  121. 0x38
  122. 0x4a
  123. 0x71
  124. 0x77
  125. 0x38
  126. 0x4a
  127. 0x71
  128.  
  129. nhận thấy
  130. 0x71
  131. 0x77
  132. 0x38
  133. 0x4a lặp lại => ta sẽ xor với các ký tự
  134.  
  135. 0x71
  136. 0x77
  137. 0x38
  138. 0x4a
  139.  
  140. code:
  141. import base64
  142. def xor(plain):
  143. xor_key = '\x71\x77\x38\x4a'
  144. encoded = ''
  145. for i in range(len(plain)):
  146. encoded += chr(ord(xor_key[i % len(xor_key)]) ^ ord(plain[i]))
  147.  
  148. return encoded
  149.  
  150. print base64.b64encode(xor('{"showpassword":"yes","bgcolor":"#ffffff"}'))
  151.  
  152.  
  153. ra: ClVLIh4ASCsCBE8lAxMacFMOXTlTWxooFhRXJh4FGnBTVF4sFxFeLFMK
  154.  
  155. B3: Thay thế cookie: ClVLIh4ASCsCBE8lAxMacFMOXTlTWxooFhRXJh4FGnBTVF4sFxFeLFMK
  156.  
  157.  
  158. ra được kết quả: The password for natas12 is EDXp0pS26wLKHZy1rDBPUZk0RKfLGIR3
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement