decrypt-WEB-BugKuCTF

11 篇文章 0 订阅
10 篇文章 0 订阅

题目

在这里插入图片描述

密文:fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=
提示:

<?php
function encrypt($data,$key)
{
    $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;
    }
    for ($i=0; $i < $len; $i++) {
        $str .= chr((ord($data[$i]) + ord($char[$i])) % 128);
    }
    return base64_encode($str);
}
?>

题解

先base64解密密文:
}l.&W’EG*B(W[(+G’U-0
在这里插入图片描述

一串乱码
MD5的key:
729623334f0aa2784a1599fd374c120d

提示

看加密代码,先是key长度补齐,再进行一个凯撒密码加密,ASCII码的最大值为128,所以密文-key>0,则data+char<128;res=密文-key;
否则res=密文-key+128

代码

def decrypt():
    #base64_decode("fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=")
    string="}l.&W'EG*B(W[(+G'U-0"
    key="729623334f0aa2784a1599fd374c120d"#md5('ISCC')
    print(len(string),len(key))
    char=key+key[:len(string)-len(key)]
    print(char,len(char))
    flag=""
    for i in range(len(string)):
        if ord(string[i])-ord(char[i])>0:
            flag+=chr(ord(string[i])-ord(char[i]))
        else:
            flag+=chr(ord(string[i])-ord(char[i])+128)
    print(flag)
#主函数
if __name__ == '__main__':
    print("/*Begin*\\")
    decrypt()

结果

在这里插入图片描述
Flag:{asdqwdfasfdawfefqwdqwdadwqadawd}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值