当前位置:首页 > Web开发 > 正文

我佛了 这个题纠结好久......... 前言 需要解密的密文: fR4aHWwuFCYYVydFRxMqHhhCKB

2024-03-31 Web开发

技术图片

懒得写详细wp了。。。。

我佛了 这个题纠结好久.........

前言

需要解密的密文:

fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=

打开赛题审源码分析

1 function encrypt($data,$key) 2 { 3 $key = md5(‘ISCC‘); 4 $x = 0; 5 $len = strlen($data); 6 $klen = strlen($key); 7 8 for ($i=0; $i < $len; $i++) { 9 10 if ($x == $klen) 11 { 12 $x = 0; 13 } 14 @$char .= $key[$x]; //把key里面的第一个字符拼接到char里面 15 $x+=1; //x执行一次循环加一次1 有几多个字符串加几多次 16 print_r("88:",$key[$x]); 17 } 18 19 echo $char."<br>"; 20 //传入有几多个字符串就取前几多个cmd5字符串赋值给char 21 22 23 for ($i=0; $i < $len; $i++) { 24 //取第data里面的第i个数据加上char里面的第i个数据 把他们的ord()ASCII值相加取余128 25 $str .= chr((ord($data[$i]) + ord($char[$i])) % 128); 26 } 27 print($str); 28 29 //base64位加密 30 return base64_encode($str); 31 }

逆向思维用PHP写解密脚本

1 function jiemi($str1){ 2 echo "初始值:".$str1."<br>"; 3 $str=base64_decode($str1); 4 5 6 $lens=strlen($str); 7 $j=0; 8 echo "颠末base64解码后:".$str."<br>"; 9 echo "长度:".$lens."<hr>"; 10 $key1 = md5(‘ISCC‘); 11 $key2 = md5(‘ISCC‘); 12 $key=$key1.$key2; 13 // for($j=0;$j<$lens;$j++){ 14 // //$ord_str=ord($str[i]); 15 // echo $str[j]; 16 17 // } 18 $jie_str=""; 19 for ($i=0; $i<$lens; $i++) { 20 echo $i; 21 echo "第一次字符串加密".$str[$i]."<br>"; 22 23 // @$str .= chr((ord($data[$i]) + ord($char[$i])) % 128); 24 25 $str1=ord($str[$i]); 26 echo "颠末ord转换成ASCII值:".$str1."<br>"; 27 28 if($str1<128){ 29 $str1=$str1+128; 30 }else if($str>128){ 31 $str1=$str+128; 32 }else if($str>=256){ 33 $str1=256+$str; 34 } 35 echo "颠末128取余逆向:".$str1."<br>"; 36 37 $str2=$str1-ord($key[$i]); 38 echo "减去CMD5附加的值:".$str2.":".$key[$i]."<br>"; 39 $str3=chr($str2); 40 echo "emm:".$str3."<br>"; 41 42 $jie_str=$jie_str.$str3; 43 //$jie_str=$str3; 44 45 46 } 47 48 print_r($jie_str); 49 }

颠末改削代码得到两段代码合并即可

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31033.html