2022年暑期集训记录--6月29日
1.[XMAN2018排位赛]AutoKey
1.得到USB流量,首先了解AutoKey是什么
https://blog.csdn.net/weixin_47024013/article/details/118712504
2.使用UsbKeyboardDataHacker.py 工具
https://github.com/WangYihang/UsbKeyboardDataHacker/blob/master/UsbKeyboardDataHacker.py
获得流量,来获取密文
2.去掉”CAP"和"DEL",使用网站解密
https://www.wishingstarmoye.com/ctf/autokey
3.没成功,看了一下大佬的WP,使用breakautokey工具破解,并且在删除DEL时,其前面的字母也要删除,则完整的密文是:
mplrvffczeyoujfjkybxgzvdgqaurkxzolkolvtufblrnjesqitwahxnsijxpnmplshcjbtyhzealogviaaissplfhlfswfehjncrwhtinsmambvexpziz
4.由于网上找不到breakautokey工具的py了,我就先用的网站,当key为FLAGHERE时,可以得到flag
2.[QCTF2018]X-man-Keyword
1.得到一张png,binwalk和pngcheck都没有明确的信息,用cloacked-pixel-master(pyhon2的调了好久),使用命令:python lsb.py extract 1.png 001.txt lovekfc,得到txt
2.显然不是flag,是关键字密码,需要key,根据图片内容提示,猜测是将26个英文字母中的lovekfc提前,作为密钥
lovekfcabdghijmnpqrstuwxyz
使用脚本,关键字密码:https://blog.csdn.net/weixin_47024013/article/details/118521935
3.得到flag
3.一路到底
1.得到一个好大的zip,直接点开我的电脑卡住了(tcl)得先解压一下,得到一堆txt
2.随便点开一个,发现内容如此下,是由一个txt指向另外一个txt
3.猜测是按照它的顺序将前面的数字连在一起会得到新的zip或者png等,看到了一个名为start的txt
4.作为十六进制转换一下,20555,转化为hex是504B,猜测是zip,用脚本
import binascii
hexdata = ''
with open('./files/start.txt') as f:
cont = f.read()
nexttxt = cont[-36:]
hexdata += '{:04x}'.format(int(cont[0:cont.find(':')-1]))
while True:
path = './files/' + nexttxt
try:
with open(path) as f:
cont = f.read()
nexttxt = cont[-36:]
hexdata += '{:04x}'.format(int(cont[0:cont.find(':')-1]))
except:
break
with open('flag.zip','wb') as f:
f.write(binascii.unhexlify(hexdata))
5.得到含有加密png的zip
6.没有找到关于密码的提示,暴力破解小写字母加数字,共六位(刚开始试的纯数字和纯字母,不对)
7.显示文件格式错误
8.010打开,末尾是FFD9,开头是89504E47,把开头改了,改为FFD8FFE0
9.在png上有flag
4.[BSidesSF2019]thekey
1.得到USB流量,直接用UsbKeyboardDataHacker.py
2。得到flag,但是提交时需要大写(在研究为什么,明白了回来补充)
flag{MY_FAVOURITE_EDITOR_IS_VIM}
5.[SUCTF2019]protocol
1.USB流量,用UsbKeyboardDataHacker.py 没有发现
2.用foremost分离试一下,得到一些png
3.可以看出每张图片上的东西都是镜像的,那么就是要排顺序,参考了一下大佬的WP
4.返回wireshark中,排长度,从大小为7845开始,提取信息,前十五个(因为图片中前十五个有字)是
04 03 02 01 00 09 08 07 06 05 0e 0d 0c 0b 0a
5.再从第十六个开始向后数十个(因为有十张黑图)
06 07 0e 04 01 0d 00 02 0b 09
6.然后就可以发现规律,则有字的图片的对应大小就是
04 03 02 01 00 09 08 07 06 05 0e 0d 0c 0b 0a
以此类推
7.对照有字的图的数据,找出与黑色图片相同数据的位置,即可以找到黑色图片对应的字
例如,第一张是06,那么在有字的图片数据中是第九个,所以对应的就是s(需要镜像)
8.以此类推,就可以得到flag,flag是suctf
6.ezsql
校赛的方法还在研究,请教别人是找的规律
f对应的ASCII是102,l对应的是108,然后以此类推,用了一个脚本
s = '1021089710312356565057100515048455652575545525050994556985510245571014953102101985756574849125'
temp = ''
while len(s):
if int(s[:3]) < 127:
temp += chr(int(s[:3]))
s = s[3:]
else:
temp += chr(int(s[:2]))
s = s[2:]
print(temp)