Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Source:
- <?
- $defaultdata = array( "showpassword"=>"no", "bgcolor"=>"#ffffff");
- function xor_encrypt($in) {
- $key = '<censored>';
- $text = $in;
- $outText = '';
- // Iterate through each character
- for($i=0;$i<strlen($text);$i++) {
- $outText .= $text[$i] ^ $key[$i % strlen($key)];
- }
- return $outText;
- }
- function loadData($def) {
- global $_COOKIE;
- $mydata = $def;
- if(array_key_exists("data", $_COOKIE)) {
- $tempdata = json_decode(xor_encrypt(base64_decode($_COOKIE["data"])), true);
- if(is_array($tempdata) && array_key_exists("showpassword", $tempdata) && array_key_exists("bgcolor", $tempdata)) {
- if (preg_match('/^#(?:[a-f\d]{6})$/i', $tempdata['bgcolor'])) {
- $mydata['showpassword'] = $tempdata['showpassword'];
- $mydata['bgcolor'] = $tempdata['bgcolor'];
- }
- }
- }
- return $mydata;
- }
- function saveData($d) {
- setcookie("data", base64_encode(xor_encrypt(json_encode($d))));
- }
- $data = loadData($defaultdata);
- if(array_key_exists("bgcolor",$_REQUEST)) {
- if (preg_match('/^#(?:[a-f\d]{6})$/i', $_REQUEST['bgcolor'])) {
- $data['bgcolor'] = $_REQUEST['bgcolor'];
- }
- }
- saveData($data);
- ?>
- $data["showpassword"] == "yes"
- daa được lấy thông qua hàm loadData
- hàm load data được gọi từ cookie
- => $data được lấy từ biến data của cookie
- Tóm tắt:
- B0: Tìm input của hàm xor bằng câu lệnh php:
- echo json_encode(array( "showpassword"=>"no", "bgcolor"=>"#ffffff"));
- ra: input = showpassword"=>"no", "bgcolor"=>"#ffffff
- B1: Ta xem cookie của trang bằng cookie manager +: ta có: ClVLIh4ASCsCBE8lAxMacFMZV2hdVVotEhhUJQNVAmhSEV4sFxFeaAw%3D
- Lưu ý: ? và = sẽ được thay đổi thành to %3F and %3D dẫn tới đoạn cookie:
- ClVLIh4ASCsCBE8lAxMacFMZV2hdVVotEhhUJQNVAmhSEV4sFxFeaAw=
- B2: Ta encode base 64 kết hợp với xor đoạn cookie ở trên để tìm giá trị xor:
- có đoạn code bằng python:
- import base64
- plain = '{"showpassword":"no","bgcolor":"#ffffff"}'
- xored = base64.b64decode('ClVLIh4ASCsCBE8lAxMacFMZV2hdVVotEhhUJQNVAmhSEV4sFxFeaAw=')
- for i in range(len(xored)):
- print hex(ord(xored[i]) ^ ord(plain[i]))
- ra:
- 0x71
- 0x77
- 0x38
- 0x4a
- 0x71
- 0x77
- 0x38
- 0x4a
- 0x71
- 0x77
- 0x38
- 0x4a
- 0x71
- 0x77
- 0x38
- 0x4a
- 0x71
- 0x77
- 0x38
- 0x4a
- 0x71
- 0x77
- 0x38
- 0x4a
- 0x71
- 0x77
- 0x38
- 0x4a
- 0x71
- 0x77
- 0x38
- 0x4a
- 0x71
- 0x77
- 0x38
- 0x4a
- 0x71
- 0x77
- 0x38
- 0x4a
- 0x71
- nhận thấy
- 0x71
- 0x77
- 0x38
- 0x4a lặp lại => ta sẽ xor với các ký tự
- 0x71
- 0x77
- 0x38
- 0x4a
- code:
- import base64
- def xor(plain):
- xor_key = '\x71\x77\x38\x4a'
- encoded = ''
- for i in range(len(plain)):
- encoded += chr(ord(xor_key[i % len(xor_key)]) ^ ord(plain[i]))
- return encoded
- print base64.b64encode(xor('{"showpassword":"yes","bgcolor":"#ffffff"}'))
- ra: ClVLIh4ASCsCBE8lAxMacFMOXTlTWxooFhRXJh4FGnBTVF4sFxFeLFMK
- B3: Thay thế cookie: ClVLIh4ASCsCBE8lAxMacFMOXTlTWxooFhRXJh4FGnBTVF4sFxFeLFMK
- ra được kết quả: The password for natas12 is EDXp0pS26wLKHZy1rDBPUZk0RKfLGIR3
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement