分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

bugku_web_PHP_encrypt_1(ISCCCTF) (涉及到md5加解密,尚需进一步学习)

发布时间:2023-09-06 02:17责任编辑:郭大石关键词:PHP

一道没有网址的web题、、很奇怪哎、、

然后把文件下载并解压,得到一个给字符串加密的PHP

解题思路是这样:

我们要提交的flag作为一个字符串,赋值给$data传入这个脚本之后,得到了上面给出的字符串:fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=

我们要做的就是逆向找出这个flag

密码学还没学、、md5的加密和解密还不会,只能照抄大佬的wp了、、、

https://blog.csdn.net/qq_19861715/article/details/79385075

<?phpfunction 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}

bugku_web_PHP_encrypt_1(ISCCCTF) (涉及到md5加解密,尚需进一步学习)

原文地址:https://www.cnblogs.com/huangming-zzz/p/9742523.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved