XDCTF CRACK180

先是一串密文,发现了一些规律:AB的组合一定是5个一组成对出现的。然后count了一下组合的数量,一共是6种情况。猜测这个一个组合是对应的一个字母,6个话,这里应该是16进制,按照顺序对应ABCDEF,是培根密码,遂写了个程序替换了一下,得到:

595270E5853B133E07BDB5D7F827D0DF6A910DE23289280801FAEFDD4078E56FB8C2B5C881F2B7F58A096A367A32BE33D7248989D6B2319F091FF4A12FF2A4717D4C01B242927BE0643F06FBE29B10AE

然后各种解密。

然后就没有思路了。去端口上nc一下,自己建了个账户给Ph转账,结果在最后看到了一样类型的数据,转换一下,在0x40-0x60的地方发现了我这次的OneTimePassword。看来这个数据结构应该是包括了发送人接收人转账金额口令balabala等一系列结构的数据。其中0x40到0x60这个区域是一次性口令。那么我们在题目开始给的数据中截取,得到了Ph的一次性口令:


然后思路就很明确了,按照题意,登陆Ph的账号,给Z2333打23333这么多钱。手动测试成功。作为一个懒人,写了个脚本以后看得爽:

import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('game1.xdctf.com',50008))
a="595270AABAA5853AAAAB133AABAA07AAAABAAABBAAAAB5AAABB7AABAB827AAABB0AAABBAABAB6AAAAA910AAABBAABAA23289280801AABABAAAAAAABAAAABABAAABBAAABB4078AABAA56AABABAAAAB8AAABA2AAAAB5AAABA881AABAB2AAAAB7AABAB58AAAAA096AAAAA367AAAAA32AAAABAABAA33AAABB7248989AAABB6AAAAB2319AABAB091AABABAABAB4AAAAA12AABABAABAB2AAAAA4717AAABB4AAABA01AAAAB242927AAAABAABAA0643AABAB06AABABAAAABAABAA29AAAAB10AAAAAAABAA"
l=len(a)
print l
temp=[]
i=0
real=""
while(i
XDCTF CRACK180_第1张图片

你可能感兴趣的:(XDCTF)