Bugku-CTF之PHP_encrypt_1(ISCCCTF) [fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=]
2024-09-06 13:31:09
Day34
PHP_encrypt_1(ISCCCTF)
fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=
下载下来.zip文件
本题要点:encrypt 函数,编码能力
只能照搬大佬的解密代码了
<?php
function decrypt($str) {
$mkey = "729623334f0aa2784a1599fd374c120d";
$klen = strlen($mkey);
$tmp = $str;
$tmp = base64_decode($tmp); // 对 base64 后的字符串 decode
$md_len = strlen($tmp); //获取字符串长度
$x = 0;
$char = "";
for($i=0;$i < $md_len;$i++) { // 取二次加密用 key;
if ($x == $klen) // 数据长度是否超过 key 长度检测
$x = 0;
$char .= $mkey[$x]; // 从 key 中取二次加密用 key
$x+=1;
}
$md_data = array();
for($i=0;$i<$md_len;$i++) { // 取偏移后密文数据
array_push($md_data, ord($tmp[$i]));
}
$md_data_source = array();
$data1 = "";
$data2 = "";
foreach ($md_data as $key => $value) { // 对偏移后的密文数据进行还原
$i = $key;
if($i >= strlen($mkey)) {$i = $i - strlen($mkey);}
$dd = $value;
$od = ord($mkey[$i]);
array_push($md_data_source,$dd);
$data1 .= chr(($dd+128)-$od); // 第一种可能, 余数+128-key 为回归数
$data2 .= chr($dd-$od); // 第二种可能, 余数直接-key 为回归数
}
print "data1 => ".$data1."<br>\n";
print "data2 => ".$data2."<br>\n";
}
$str = "fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=";
decrypt($str);
?>
用在线的测试网页直接测试
嗯,这个flag形式很坑爹:
Flag:{asdqwdfasfdawfefqwdqwdadwqadawd}
ps:还是要踏踏实实写代码啊!!!
完成!
最新文章
- 【转】 Easy RadControl 之 RadGridView(Silverlight)
- MVC 基架不支持 Entity Framework 6 或更高版本
- python 笔记1:安装python;eclipse中安装配置pydev
- MonoRail学习-入门实例篇
- UVA 10047 The Monocycle
- 限制波尔兹曼机(Restricted Boltzmann Machines)
- Git Cmd
- sharepoint 模糊搜索
- 刷入临时recovery
- yii2中的url美化
- java socket网络编程(多线程技术)
- Visual Studio自动添加头部注释 -C#开发2010-2013验证
- 《Clean Code》 代码简洁之道
- yii2 注册一个新事件(trigger Event)
- 二路归并算法的java实现
- 实现ppt幻灯片播放倒计时
- 朱晔的互联网架构实践心得S1E5:不断耕耘的基础中间件
- 博客主Judge已跳槽搬家emmm
- elasticsearch ik中文分词器安装
- AssertJ断言系列-----------<;数据库断言三>;