bugku web PHP_encrypt_1(ISCCCTF)

Posted truthilia-12580

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bugku web PHP_encrypt_1(ISCCCTF)相关的知识,希望对你有一定的参考价值。

这道题没有题目链接。

在题目界面有一个文件,下载下来发现是一段php的代码。

技术图片
  1 <?php
  2 function encrypt($data,$key)
  3 {
  4     $key = md5(‘ISCC‘);//获得ISCC的md5
  5     $x = 0;
  6     $len = strlen($data);
  7     $klen = strlen($key);
  8     for ($i=0; $i < $len; $i++) {
  9         if ($x == $klen)
 10         {
 11             $x = 0;
 12         }
 13         $char .= $key[$x];
 14         $x+=1;		//从第0位开始取md5的值放入char,到最后以为则返回开头,char与data长度相等
 15     }
 16     for ($i=0; $i < $len; $i++) {
 17         $str .= chr((ord($data[$i]) + ord($char[$i])) % 128);
 18     }			//将data第i位与char第i位的ascii值相加取128的余数
 19     return base64_encode($str);//str以base64加密
 20 }
 21 ?>
View Code

没有学过python,但还是尝试写了一下脚本。

技术图片
  1 import base64
  2 code="fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA="
  3 b64d=base64.b64decode(code)
  4 blen=len(b64d)
  5 md5="729623334f0aa2784a1599fd374c120d"
  6 mlen=len(md5)
  7 x=0
  8 key=""
  9 for i in range(0,blen):
 10     if x==mlen:
 11         x=0
 12     key=key+md5[x]
 13     x+=1
 14     #print(key)
 15 pwd=""
 16 for i in range(0,blen):
 17     temp=b64d[i]-ord(key[i])
 18     temp+=128
 19     pwd=pwd+chr(temp)
 20 print(pwd)
View Code

得到flag,最后要以Flag:{}的形式提交。

以上是关于bugku web PHP_encrypt_1(ISCCCTF)的主要内容,如果未能解决你的问题,请参考以下文章

Bugku——Web——web基础$_POST

bugku_web_变量1(CTF)

bugku_web_多次

bugku web web基础$_GET

bugku web基础$_GET

bugku web基础$_POST