一段base64

首先打开文档,一堆字符串。。
在这里插入图片描述
然后我们拿去base64解密,得到一串八进制的转义字符。
在这里插入图片描述
然后在python里printf(…)这一大串东西,就得到

在这里插入图片描述

#coding:utf-8
import gmpy2
b=[....]
i=0;
while True:
 print(chr(b[i])),
 i=i+1

用python输出对应的ascii码

& # x 2 6 ; & # x 2 3 ; & # x 3 1 ; & # x 3 0 ; & # x 3 2 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 1 ; & # x 3 0 ; & # x 3 8 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 9 ; & # x 3 7 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 1 ; & # x 3 0 ; & # x 3 3 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 3 ; & # x 3 7 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 5 ; & # x 3 5 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 6 ; & # x 3 6 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 9 ; & # x 3 9 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 1 ; & # x 3 1 ; & # x 3 6 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 1 ; & # x 3 0 ; & # x 3 2 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 9 ; & # x 3 5 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 1 ; & # x 3 1 ; & # x 3 6 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 1 ; & # x 3 0 ; & # x 3 2 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 9 ; & # x 3 9 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 5 ; & # x 3 0 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 4 ; & # x 3 8 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 4 ; & # x 3 9 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 5 ; & # x 3 5 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 4 ; & # x 3 9 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 5 ; & # x 3 5 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 1 ; & # x 3 1 ; & # x 3 3 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 1 ; & # x 3 1 ; & # x 3 9 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 1 ; & # x 3 0 ; & # x 3 1 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 3 ; & # x 3 7 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 5 ; & # x 3 5 ; & # x 3 b ; & # x 2 6 ; & # x 2 3 ; & # x 3 6 ; & # x 3 8 ; & # x 3 b ;

然后再用python。。本人对python不太熟悉所以可能有点麻烦。。

#coding:utf-8
import gmpy2
b='......'
b=b.replace('& # x ',' ')
b=b.replace(' ','')
b=b.replace(';',',')
print(b)

得到

26,23,31,30,32,3b,26,23,31,30,38,3b,26,23,39,37,3b,26,23,31,30,33,3b,26,23,33,37,3b,26,23,35,35,3b,26,23,36,36,3b,26,23,39,39,3b,26,23,31,31,36,3b,26,23,31,30,32,3b,26,23,39,35,3b,26,23,31,31,36,3b,26,23,31,30,32,3b,26,23,39,39,3b,26,23,35,30,3b,26,23,34,38,3b,26,23,34,39,3b,26,23,35,35,3b,26,23,34,39,3b,26,23,35,35,3b,26,23,31,31,33,3b,26,23,31,31,39,3b,26,23,31,30,31,3b,26,23,33,37,3b,26,23,35,35,3b,26,23,36,38,3b,

然后输出sacii码

#include<stdio.h>
#include<stdlib.h>
int main()
{
 char n;
 int a=0,b,c;
 while(scanf("%c",&n)!=EOF)
 {
  if(n==',')
  {
   printf("%c",a);
   a=0;
  }
  else
  { if(n=='a')
    n=':';
   else if(n=='b')
    n=';';
   a=a*16+n-'0';
  }
 }
 return 0;
}
&#102;&#108;&#97;&#103;&#37;&#55;&#66;&#99;&#116;&#102;&#95;&#116;&#102;&#99;&#50;&#48;&#49;&#55;&#49;&#55;&#113;&#119;&#101;&#37;&#55;&#68

然后就继续解码。。。

字符串最后加;再输入

#include<stdio.h>
#include<stdlib.h>
int main()
{
 char n;
 int a=0,b,c;
 while(scanf("%c",&n)!=EOF)
 {
  if(n=='&'||n=='#')
   continue;
  if(n==';')
  {
   printf("%c",a);
   a=0;
  }
  else
  a=a*10+n-'0'; 
 }
 return 0;
}

最后得到:flag%7Bctf_tfc201717qwe%7D
因为%7B和%7D是url编码的{和},然后可以得到flag了。

发布了8 篇原创文章 · 获赞 13 · 访问量 2626

猜你喜欢

转载自blog.csdn.net/jcbx_/article/details/89981151