bugku_web_PHP_encrypt_1(ISCCCTF) (涉及到md5加解密,尚需进一步学习)
Posted 明卿册
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bugku_web_PHP_encrypt_1(ISCCCTF) (涉及到md5加解密,尚需进一步学习)相关的知识,希望对你有一定的参考价值。
一道没有网址的web题、、很奇怪哎、、
然后把文件下载并解压,得到一个给字符串加密的php
解题思路是这样:
我们要提交的flag作为一个字符串,赋值给$data传入这个脚本之后,得到了上面给出的字符串:fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=
我们要做的就是逆向找出这个flag
密码学还没学、、md5的加密和解密还不会,只能照抄大佬的wp了、、、
https://blog.csdn.net/qq_19861715/article/details/79385075
<?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}
以上是关于bugku_web_PHP_encrypt_1(ISCCCTF) (涉及到md5加解密,尚需进一步学习)的主要内容,如果未能解决你的问题,请参考以下文章