2021年第一届网刃杯WP misc4解+协议2解

Source

气死我了气死我了气死我了
私钥头错了一直卡着,过了就好说多了。
注:encrypted ad1是赛后出的

MISC部分

签到

解压得到flag.txt和一段密文
Flag.txt是0宽
勾选BCDE(vim查看就可以看到要勾选这几个)、得到hint
在这里插入图片描述
myself居然是flag.txt的md5,我麻了
得到key:f71b6b842d2f0760c3ef74911ffc7fdb
最后测试rabbit,得到flag
在这里插入图片描述

flag{WelY0me_2_bOl3an}

baby-usb

键盘流量,完全按这篇即可
http://www.ga1axy.top/index.php/archives/22/
脚本直接用,步骤直接仿
得到

output :
CT[DEL]ONH[DEL]GRATUE[DEL]LATIOKE[DEL][DEL]NSONFINY[DEL]DINGMEBUTIWII[DEL]LLNS[DEL]OTTELLYOUWHERETQA[DEL][DEL]HEPZ[DEL]ASSWORDWS[DEL][DEL]OX[DEL]FWE[DEL]OD[DEL]RDDOC[DEL]CUMENTISGOARFV[DEL][DEL][DEL]NDFINDITAGAIN

发现删除的就是KEY,
The key is qazwsxedcrfv

即可打开word

flag{685b42b0-da3d-47f4-a76c-0f3d07ea962a}

Mspaint

上vol,imageinfo显示Win7,pslist发现用了cmd、画图、ie,cmd说他喜欢把图片截图下来,因此filescan |grep ‘png’
在这里插入图片描述
导出,发现文件只有一个hack
然后iehistory发现他访问了一个百度云盘链接,尝试用hack,成功。密码即hack。下载下来附件,居然有密码。
因此查看内存图,方法如此链接最后一个
https://blog.csdn.net/qq_42880719/article/details/117304586
在这里插入图片描述
因为我怕看错(主要是我眼比较瞎),所以我用zip爆破软件,用户自定义爆
我选择了8%R~sSA52!iqp,长度8位
在这里插入图片描述

解压之后,发现是python写的
于是直接逆

参考:https://blog.csdn.net/weixin_44362969/article/details/105616531
第一步:python pyinstxtravtor.py xxxxx.exe

第二步:得到一个文件夹
其中有一个struct 跟 xxxxx(都没有后缀名)
十六进制查看struct,xxxxx。
会发现xxxxx比struct少了一行
这时将struct的那一行复制给xxxxx,然后xxxxx保存后添加后缀
xxxxx.pyc

第三步:使用uncompyle6(我是kali)
uncompyle6 xxxxx.pyc > xxxxx.py

得到

key = 'xxxxxxxxxxxxxxx'
flag = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
data = ''
for i in range(0, len(flag)):
    data += hex(ord(flag[i]) ^ ord(key[(i % 15)]))[2:].zfill(2)
else:
    print(data.upper())
    data = '12045014240343684450506E5E1E1C165D045E6B52113C5951006F091E4F4C0C54426A52466A165B0122'

然后现在需要找key,但是我们知道flag{开头,因此可以反推出key前5位

f = [18,4,80,20,36]
keys = 'flag{'
for i in range(len(f)):
    print(chr(f[i]^ord(keys[i])),end='')

得到th1s_,直接winhex搜key
在这里插入图片描述

keys = 'th1s_1s_th3_k3y'
s = '12045014240343684450506E5E1E1C165D045E6B52113C5951006F091E4F4C0C54426A52466A165B0122'
for i in range(len(s)//2):
    print(chr(int(s[i*2:i*2+2],16)^ord(keys[(i % 15)])),end='')

其实这里预期搜key应该是内存取证用screenshot指令,可以看到key

flag{20708c15-eb55-4cbc-930b-68de15c55b32}

encrypted ad1

积累了,学到了。是我傻了
下载下来文件名为ZW5jcnlwdA,解码之后得到encrypt
结合题目为ad1,所以应该是一个ad1的磁盘文件,并且加了密
查看文件尾,能够看到一串base
在这里插入图片描述

但很明显,这里转过来了,因此复制出来脚本转一下

s = '''==gqxEjgKtDzKI/D1ajBJIcxvLrijkUVc28YA3sTmY8Ac+r3fiDWl80a
44vbCwhxf8xwibLU6V1Ek31d7Q8W78VcYS+8Za1+IhG3hQ3NiLkbmqXUzb2M3Ou7
15G1xhX3lvi7Yj2CyTz68WQKzcoTvv4pZU+ISdQdNcoJEQSJhocwQAYgCUowrcMW
AytwCo05H/yUQGTYA7acF8stHPUPScAoWdL/NW5FqASDAJRN7cM/3kR9GWzTw4WI
mS36/C/94OBX1jJQVssAnd1NPD2F9EcX0GS2L9GIzdPyL5kZgZ8I2ShrzGo//HX5
G+IqTcKRqsB5TAOddb4lTp/r6XowLqAY9IZJAGoAR9kcrKNzwsJXn6HZN29ilFTC
VnwRqDpDulps/c2fyInUqsHzZxctm5iiCZRiy1XjcyLrJtRKbTvyfXY1K7D1Q+dg
eKbzHMihscHQiBL+WMG/3Drwsz/vQiXdS7QCpNU230WH0HXZiqItJOfPLrpR5L7g
VPjDC1WRlB2J169jNBIABGoAFCd8AqBrKhkTxfHOGZOugFK5RXT2+9S1rZEGMg5b
xtBgNzeFo9pq2RtXAeWgXcJXSUC9MFnY5fbuToUSOlvsYr4CKk99EFiX7S1YU+Eo
hUTs6hRIXbt6EdzkVQsZbDkgLIrjiOyRXO20Quq/a09PqC/ZqXz+mztjgRvlPYj4
fgNABGoAxIhFqK1LV4121nsmnKfgPLUTEZk1bG05dULkA86/AdRgbJWJ+38/4Z+K
GRT8Kqu2dQ4f47fSp+OQL76S4ur0Vmk2vXHOZqXuZIvBIV/5ZmO8uC5sdyT+Cb+3
19ct8Twfc9lACABWXDG5kijTdzytbabEFmONqNHlOutjTFjGmWOABGoABFWJTb6I
n8Or2leNITMvoTZeew52vTTGfAWmLeNfHh+qgRGt6QmpHt8+YqUyQr6HMFq5bNIH
HeLDiPc6R6/eaiCZ2VYYf8G6G9vfzZLyb4JD8WHP3q4+gPlg+n1xQCsv+t5cGuhL
JhPoD69aIgB0rxiEDzV6zG3SqziFZXjYtyXYpZ2oFEWTbXBMhnTucJXTRrxktXXx
P3e1cRCbX0VZXxpZeLqd62O9s5QnfJJxSsHOaR8YZ2ONVLtotpFB6/WDX392066T
jppXfKSRqD7QMDNO0Xd0nvRYfvAW2T9jsEPxPx2ZCV+JPYu2SKneIYz+QYYcaPA1
zaE+aypIzG6SfCQABIoABAQADIQdDBG79zq8d0RhLOCxVaKSLcSQCTRtETiTLUYU
yYk0WRs709wlDEsm0VsQI+X7HDSxaQJeIBWzZUaAs0ALuIqW4kw5Ny6ZSN1n52HJ
QMEJV50RwrFxjgH5DfLGa7P2nQJWivL02fgBeaGtjkSi86zoPwOmmYnocbP3Ad0t
bQtXECvOEUiz8TsbgalR5bkKpSTmR98NCO9SKAVUN5IM8uOnl2ct/37JLMYa+fGZ
Q3I4ZHZmJN8vOANsnCNs68+QVWtRIo4fAp2QqHpmn/Is8OeOcwEJkwA3HJvJbHLI
w0vleLaqwCP9UfXGHlBbknjJ4Deqb5RqnHQsN383ey+IADewAEQACKAABIApEIIM'''

print(s[::-1])

得到一个base串,看了之后应该类似于RSA之类的。
然后打开搞磁盘文件常用的FTK,发现FTK能解密,于是为了研究,主动去生成了一个ad1

在这里插入图片描述在这里插入图片描述

然后反正就生成一个ad1,记得生成的文件给他加个密
在这里插入图片描述
注意到正确的文件头应该是41 44
于是将题目的文件尾base删掉、文件头00 00 改成 41 44
然后FTK里点击decrypt ad1选项
可以注意到
在这里插入图片描述
能使用证书来解密,于是尝试。
然鹅比赛期间我一直没添加-----BEGIN RSA PRIVATE KEY-----头和-----END RSA PRIVATE KEY-----尾,一直是加的-----BEGIN PRIVATE KEY-----,导致没解出来,我麻了
在这里插入图片描述
如图,然后保存为pfx文件。
在这里插入图片描述在这里插入图片描述
解密之后,用FTK挂载此文件
在这里插入图片描述
这里我挂载到了H盘
在这里插入图片描述
直接想到时间来作为2进制,2进制转ascii
于是写个脚本转换

import os
list = ['']*392
i = 0
for j in range(392):
    list[j] = os.path.getmtime('H:\\'+str(j)+'.crypto')
print(list)
flag = ''
for i in range(392):
    if(str(list[i]) == '1629859254.863367'):
        flag += '0'
    else:
        flag += '1'
print(flag)
tmp = ''
for k in range(len(flag)):
    tmp += flag[k]
    if len(tmp) == 8:
        print(chr(int(tmp,2)),end='')
        tmp = ''

得到

You are so cool!!! this is your key: 6a90383cd08c

然后这392个文件是crypto文件
在这里插入图片描述

用这个,然后用这个key来解0.crypto和1.crypto(因为这两个时间不一样)
在这里插入图片描述

flag{ba40c40b-1356-4fc6-8cc7-6a90383cd08c}

协议

藏在s7里的秘密

下载下来的流量包是部分损坏的,使用网站在线修复
http://f00l.de/hacking/pcapfix.php
然后打开流量包,发现有png,但是就如此提取,必定会混入奇奇怪怪的东西
于是观察之后,用tshark来提取

tshark -r Ks3qlAF1bTuysqpJ.pcap -T fields -e s7comm.resp.data -Y “s7comm.param.func == 0x05 and ip.src==192.168.139.1” > png.txt

得到16进制数
用010打开,将十六进制数复制进去,即可得到图片,但是明显发现高度不对,因此修改任意高度,得到flag
在这里插入图片描述

flag{FSfeQefjg}

老练的黑客

和之前工控的那道,不能说是完全相似,只能说是一模一样
类原题博客&&赶快关注工控大佬的博客
根据此博客,能直接找到错误的值
在这里插入图片描述
第1199流找到22b8
然后根据观察前面的流,发现read的值是跟在过滤之后的第2个流
在这里插入图片描述
在这里插入图片描述
然后尝试理解提交

flag{22b81194}