首先打开文档,一堆字符串。。
然后我们拿去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
#include
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;
}
flag%7Bctf_tfc201717qwe%7D
然后就继续解码。。。
字符串最后加;再输入
#include
#include
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了。