天天看點

Bugku-WEB-web33

<?php
function encrypt($data,$key)
{
    $key = md5('ISCC'); #729623334f0aa2784a1599fd374c120d
    $x = 0;
    $len = strlen($data);
    $klen = strlen($key);
    for ($i=0; $i < $len; $i++) { 
        if ($x == $klen)
        {
            $x = 0;
        }
        $char .= $key[$x];
        $x+=1;
    }
    for ($i=0; $i < $len; $i++) {
        $str .= chr((ord($data[$i]) + ord($char[$i])) % 128);
    }
    return base64_encode($str);
}
?>
           

下載下傳檔案後打開index.php,内容如上

根據描述

Bugku-WEB-web33

 根據所給加密字元串還原出原始資料

編寫解密代碼

<?php
    $str = "fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=";
    $data = base64_decode($str);
	for ($i=0; $i < strlen($data); $i++) { 
			echo ord($data[$i]).' ';
    }
	$key = md5('ISCC');
    $x = 0;
    $len = strlen($data);
    $klen = strlen($key);
    for ($i=0; $i < $len; $i++) { 
        if ($x == $klen)
        {
            $x = 0;
        }
        $char .= $key[$x];
        $x+=1;
    }
	echo $char.' ';
	for ($i=0; $i < $len; $i++) {
        $num = (ord($data[$i]) - ord($char[$i])) % 128;
		if($num < 0){
			$flag .= chr($num+128);
		}else{
			$flag .= chr($num);
		}
    }
	echo $flag
?>
           

大部分代碼都與加密代碼類似,在最後一步,需要考慮ascii碼相減後為負數的情況。

線上運作代碼https://c.runoob.com/compile/1

Bugku-WEB-web33

繼續閱讀