首页 > 技术文章 > ctf之抄错的字符

zhaozhaomumu 2021-07-15 22:36 原文

题目信息如图所示

 

 

 得知该题为密码学问题

像英文的字母有 i=1,g=9,s=5,z=2

还有部分小写抄成了大写,搜索一段php代码测试

<?php
$list=[];
function fun($str,$index=0){

    if($index==strlen($str)){
        global $list;
        $ret=base64_decode($str);
        $list[]=$ret;
        return false;
    }
    $head=substr($str,0,$index);
    $mid=substr($str,$index,1);
    $end=substr($str,$index+1,strlen($str)-$index);
    $words=getWord($mid);
    foreach ($words as $key=>$v){
        $newStr=$head.$v;
        $ret=base64_decode($newStr);
        if(!preg_match('/[^a-zA-Z\d\_\-]/is',$ret)){
            fun($newStr.$end,$index+1);
        }
    }
}
function getWord($c){
    $word=["I"=>1, 'L'=>1, 'G'=>9, 'Z'=>2, 'S'=>5];
    $arr=[$c,strtolower($c)];
    if(isset($word[$c])){
        $arr[]=$word[$c];
    }
    return $arr;
}
$str="QWIHBLGZZXJSXZNVBZW";
fun($str);
var_dump($list);
?>

从运行结果上看Aman_very_cool 比较符合题意

 

 提交测试正确

 

 

 

推荐阅读