某些CTF密码算法的PHP解法

2015-12-01 11:42:39 2 9188
一、异性相吸:
最近出现了一个奇葩观点,说性别都不一样,怎么能谈恋爱?为了证明这个观点错误,请大家证明异性是相吸的。(答案为flag{}形式,提交{}内内容即可)

解法:
<?php
       
echo encrypt('mi.txt', 'asadsasdasdasdasdasdasdasdasdasdqwesqf');

function encrypt($source, $key){
        if(file_exists($source)){
                $content = '';
                $keylen = strlen($key);
                $index = 0;
                $fp = fopen($source, 'rb');
                while(!feof($fp)){
                        $tmp = fread($fp, 1);
                        $content .= $tmp ^ substr($key,$index%$keylen,1);
                        $index++;
                }
                fclose($fp);
                return $content;

        }else{
                return false;
        }
}

?>
二、Alice与Bob :
密码学历史中,有两位知名的杰出人物,Alice和Bob。他们的爱情经过置换和轮加密也难以混淆,即使是没有身份认证也可以知根知底。就像在数学王国中的素数一样,孤傲又热情。下面是一个大整数:98554799767,请分解为两个素数,分解后,小的放前面,大的放后面,合成一个新的数字,进行md5的32位小写哈希,提交答案。

解法:
<?php
$a='98554799767';
$a=floatval($a);

for((float)$i=2;$i<(float)$a;$i++){
        $num=fmod($a,$i);
        if($num==0){
                echo $i."\n";
                break;
        }
}
$j=$a/$i;
echo $j."\n";
echo md5($i.$j);
?>
三、残缺的哈希值:
小明一直将电脑密码的哈希值写在纸上,结果一不小心将墨水撒在了上面,只看得到前10位是c2979c7124,小明只记得密码是4位的数字加字母,你能帮小明恢复密码的哈希值吗?(提示:flag为密码的哈希值)
<?php
$str='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$cou=strlen($str);
for($i=0;$i<$cou-1;$i++){
        for($j=0;$j<$cou-1;$j++){
                for($k=0;$k<$cou-1;$k++){
                        for($l=0;$l<$cou-1;$l++){
                                $ret=md5($str[$i].$str[$j].$str[$k].$str[$l]);
                                if(substr($ret,0,10)=='c2979c7124'){
                                        echo $ret;die();
                                }
                        }
                }
        }
}
?>

关于作者

godblack484篇文章1190篇回复T00ls认证专家。

一个高尚的人,一个纯粹的人,一个有道德的人,一个脱离了低级趣味的人,一个有益于人民的人。

评论2次

要评论?请先  登录  或  注册