⼀道ctf中的编码问题
今天做CTF题的时候,感觉有⼀道题很有意思,记录⼀下。
题⽬链接:
给了⼀个txt⽂档,打开以后满屏都是字,太多了我就不贴上来了,根据题⽬名字,反正就随便了⼀个在线base64的⽹站,放进去,出来的还是⼀⼤段。。。
贴⼀部分吧
\134\170\65\143\134\170\67\65\134\170\63\60\134\170\63\60\134\170\63\65\134\170\63\63\134\17 0\65
\143\134\170\67\65\134\170\63\60\134\170\63\60\134\170\63\67\134\170\63\64\134\170\65\143\13 4
\170\67\65\134\170\63\60\134\170\63\60\134\170\63\67\134\170\63\62\134\170\65\143\134\170。。
。。。。
看起来像8进制的数,下⾯的代码进⾏解码:
c= ''
for i in b.split('\\'):
if i:
c+=chr(int(i,8))
print(c)
输出如下:
\x5c\x75\x30\x30\x35\x33\x5c\x75\x30\x30\x37\x34\x5c\x75\x30\x30\x37\x32\x5c\x75\x30\x30\x36\x39\ x5c
\x75\x30\x30\x36\x65\x5c\x75\x30\x30\x36\x37\x5c\x75\x30\x30\x32\x65\x5c\x75\x30\x30\x36\x36\x5c\ x75
\x30\x30\x37\x32\x5c\x75\x30\x30\x36\x66\x5c\x75\x30\x30\x36\x64\x5c\x75\x30\x30\x34\x33\x5c\x75\ x30
\x30\x36\x38\x5c\x75\x30\x30\x36\x31\x5c\x75\x30\x30\x37\x32\x5c\x75\x30\x30\x34\x33\x5c\x75\x30\ x30
\x36\x66\x5c\x75\x30\x30\x36\x34\x5c\x75\x30\x30\x36\x35\x5c\x75\x30\x30\x32\x38\x5c\x75\x30\x30\ x33
\x33\x5c\x75\x30\x30\x33\x38\x5c\x75\x30\x30\x32\x63\x5c\x75\x30\x30\x33\x33\x5c\x75\x30\x30\x33\ x35。。。。
这看起来就像是16进制的了。。。
于是继续解码:
d= ''
数字转unicode编码
for i in c.split('\\'):
if i:
d+=chr(int(i[1:],16))
print(d)
输出:
\u0053\u0074\u0072\u0069\u006e\u0067\u002e\u0066\u0072\u006f\u006d\u0043\u0068\u0061\u0072\u 0043
\u006f\u0064\u0065\u0028\u0033\u0038\u002c\u0033\u0035\u002c\u0031\u0032\u0030\u002c\u0035\u 0030
\u002c\u0035\u0034\u002c\u0035\u0039\u002c\u0033\u0038\u002c\u0033\u0035\u002c\u0031\u0032\u 0030。。。。
这看上就是Unicode编码了,于是继续个在线解码的⽹站:
输出:
String.fromCharCode(38,35,120,50,54,59,38,35,120,50,51,59,38,35,120,51,49,59,38,35,120,51,48,59,38,35, 120,51,50,59,38,35,120,51,98,59,38,35,120,50,54,59,38,35,120,50,51,59,38,35,120,51,49,59,38,35,120,51, 48,59,38,35,120,51,56,59,38,35,120,51,98,59,38,35,120,50,54,59,38,35,120,50,51,59,38,35,120,51,57,59,38, 35,120,51,55,59,38,35,120,51,98,59,38,35,120,50,54,59,38,35,120,50,51,59,38,35,120,51,49,59,38,35,120,51, 48,59,38,35,120,51,51,59,38,35,120,51,98,59,38,35,120,50,54,59,38,35,120。。。。
String.fromCharCode()是把ASCII码转成字符串,有很多种⽅法继续解码,可以直接chr()中间的数字,
或者直接在游览器⾥⾯输⼊document.writeIn()加上上⾯这段:
输出:
随便个游览器输⼊上⾯的字符串就可以了
输出:
flag%7Bctf_tfc201717qwe%7D %7B和%7D是URL编码的{和},所以最后答案就出来了。flag%7Bctf_tfc201717qwe