bugku-web-decrypt

这里的提示解密后没有什么意义

这里下载文件包

得到一个index.php文件

得到代码

复制代码
<?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);
}
?>

这里可以看到缺少data值和str值

因为提示中有一个base64的加密代码,猜测最终return输出为这个代码

复制代码
base64_encode($str)='fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA='

猜测反推data的值,data为最终flag

编写逆向exp

复制代码
<?php
$key = md5('ISCC');
$data_encoded = 'fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=';
$str = base64_decode($data_encoded);

$x = 0;
$klen = strlen($key);
$len = strlen($str);
$char = '';

// 生成密钥序列
for ($i = 0; $i < $len; $i++) { 
    if ($x == $klen) {
        $x = 0;
    }
    $char .= $key[$x];
    $x += 1;
}

// 逆向解密
$result = '';
for ($i = 0; $i < $len; $i++) {
    $result .= chr((ord($str[$i]) - ord($char[$i]) + 128) % 128);
}

echo $result;
?>

得到最终结果

相关推荐
parade岁月3 分钟前
TypeScript 全局类型声明文件规范性分析与归纳
前端·vue.js·typescript
溪i4 分钟前
react-spring/web + children not defined
前端·spring·react.js
雨夜带刀_8 分钟前
Three.js 导入模型demo分析(随笔记)
前端
用户21411832636028 分钟前
dify案例分享-Qwen3 vs 传统合同审查,这场对决谁能胜出?
前端
egghead2631612 分钟前
trae+react+tailwindcss项目开发
前端·react.js
前端啵啵猪12 分钟前
基于qiankun实现子应用菜单级keep-alive
前端·javascript
徐小夕13 分钟前
写了一款3D可视化编辑器模版,开源!
前端·javascript·github
酱酱子耶16 分钟前
async没有了await会发生什么?实际问题
前端·react.js
windliang21 分钟前
Cursor 写一个网页标题重命名的浏览器插件
前端·浏览器
JavaDog程序狗25 分钟前
【前端】前端 CSS 原子化,代码乐高随便搭
前端·css