1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 第二届“祥云杯”网络安全大赛暨吉林省第四届大学生网络安全大赛 WriteUp 祥云杯misc

第二届“祥云杯”网络安全大赛暨吉林省第四届大学生网络安全大赛 WriteUp 祥云杯misc

时间:2022-07-02 14:00:43

相关推荐

第二届“祥云杯”网络安全大赛暨吉林省第四届大学生网络安全大赛 WriteUp 祥云杯misc

团队汇总WP:n03tack

6web+4misc+4crypto+2re+3pwn

层层取证

层层套娃取证(确信)

给了一个内存和一个虚拟磁盘的取证,先看磁盘,取证大师打开提示存在bitlocker加密

用Passware Kit Forensic v1 (64-bit)能直接梭出来bitlocker的秘钥

方法是把001解压出来,然后把2.ntfs放进去,再选择有内存镜像,导入这道题的内存镜像,然后等待……

当然之后也发现内存中也可以找到,但是已经不重要

得到549714-116633-006446-278597-176000-708532-618101-131406

解开发现E盘存在一个流量包

在udp里面找到一个rar,里面包含了一个flag.docx

然后导出,说压缩包密码是开机密码

然后去看俺的另一篇博客

这里提取的是92EFA7F9F2740956D51157F46521F941

密码xiaoming_handsome,cmd5解一下就行了(不会有人没开会员吧)

解压之后发现docx还有密码

实在找不到了的时候,挂载一下,发现hint

然后去仿真。。。。。。嗯仿真不出来

照着/article/51701409948/#DDE01_8我也不行

然后就去导出内存,还是看👴的博客

找到然后密码

可以自己去操作放大看,偏移294435180,宽510

结合用户名,得到xiaoming1314,解压成功

得到flag

flag{9ca871b668f2-b668-097c-cbm8-9op404c891e2}

当然对于赛后复盘,其实Passware Kit能直接把xiaoming的开机密码梭出来,如果看内存的图像知道了是在便笺上但是看不清,可以直接取证的时候将C:\Users\帐户文件夹\AppData\Roaming\Microsoft\Sticky Notes\StickyNotes.snt打开,然后再找到里面的密码。顺带还发现,其实不用解bitlocker也能找到含有rar的流量包,在XiaoMing\AppData\Local\Temp下。总之这种内存取证解法挺多的,自己喜欢用啥方法就用啥方法。

鸣雏恋

改zip解压,在_rels下发现key和love,key是妥妥的零宽

解压之后是两张图,其实这里可以不用解压直接读CRC,可惜写的脚本有点问题,为了不浪费时间还是解压了(其实是解压途中写的zip读CRC脚本写的有问题就还是用读图片了)

然后写个脚本,2进制的ASCII

from PIL import Imagefrom tqdm import tqdmpath = 'C:\\Users\\mumuzi\\AppData\\Local\\Temp\\鸣雏恋_2dad763070b79f50c4635a906359909a\\鸣雏恋\\_rels\\love\\out\\'flag = ''for i in tqdm(range(129488)):img = Image.open(path+str(i)+'.png')s = img.getpixel((10,10))if(str(s) == '1'):flag += '0'elif(str(s) == '3'):flag += '1'else:print('wrong!')exit()s = ''rflag = ''for i in flag:s+=iif len(s)==8:rflag += chr(int(s,2))s=''print(rflag)

得到base64的png图,图片最下面就是flag

flag{57dd74fb21bb1aee50f19421bf836f23}

考古

最后的xor我是真的服气这一来怎么直接想得到太浪费时间了

先imageinfo,发现是XP,然后pslist列出表,发现cmd正在运行,cmdscan看一下cmd

然后Filescan |grep “Oneclickcleanup.exe”,然后dumpfiles -Q 0x00000000017bcbc0 -D ./

一共是得到一个dat和一个iso,dat直接拖IDA32

发现是两个异或,第一个异或是存放地址,第二个异或是异或的数据

key是this_a_key,data就是数据,把data导出,写个脚本

s = 'this_a_key'flag = ''#flags = [0x37,0x52,0x35,0x37,0x30,0x02,0x2A,0x06,0x00,0x17,0x00,0x1B,0x49,0x12,0x31,0x05,0x7F,0x38,0x00,0x0D,0x00,0x01,0x07,0x14,0x2C,0x3D,0x1E,0x07,0x09,0x59,0x21,0x1B,0x0C,0x01,0x2C,0x3D,0x0B,0x0E,0x08,0x09,0x18,0x09,0x1D,0x16,0x2C]flags = [0xA4,0xA7,0x78,0x93,0xFE,0xD0,0x45,……中间略,0x79,0x74,0x68,0x69,0x73,0x5F,0x61]for i in range(len(flags)):flag += str(hex(flags[i] ^ ord(s[i%10])))[2:].zfill(2)print(flag)f = open('ffff.dot','wb')f.write(flag.encode())

得到的ffff.dot用notepad++打开,将16进制转ascii

为什么要保存为.dot,因为我在复现我知道是dot我乐意

然后WPS打开发现提示版本过低,用office打开

然后就瞎试,比如看16进制,从200h-1800h和1800h到最后是一样的,两者相比较什么的,都试过了,没出继续看内存文件。

最后。。。想着可打印ascii的词频和异或,结果异或出了

因为长度只有31位,爆破一下0-f,竟然不对,然后想着一共出现了两次,再去试试,还是不对。麻了

因为是dot文档,又想着zip解压直接看源文件,然后再来异或

???我可去你的吧居然还有一段

最终得到flag

flag{8bedfdbb-ba42-43d1-858c-c2a5-5012d309}

麻了,太打脑壳了,别问,问就是4:07交的

ChieftainsSecret

首先给了一个文档和一张图片,文档就是题目描述,图片的话是一个古时候的电话

搜了一下是怎么用的

/v?pd=wisenatural&vid=1522905414500076

Jpg图片后面还有rar,foremost提取出来,发现是一堆TLE5501生成的数据,搜了一下他是一个角度的传感器,给了sinP,cosP,sinN,cosN

本着不会做就乱试+搜公式的原则,发现想要计算出角度,就得找到tan,于是萌生了sinP/cosP,sinN/cosN,(sinP-sinN)/(cosP-cosN)的想法,想知道角度,就再加上一个ATAN函数,除出来是弧度,就再乘以一个57.3°

顺便看了油管的视频,研究了一下四个值的变换

/watch?v=y68IdqZs4PM

最后在看第三个想法的时候恍然大悟,搞出来也正好是11个峰

上图的意思就是ATAN((sinP-sinN)/(cosP-cosN))*57.3,然后因为ATAN的范围是-90°~90°,所以才会出现到90°的时候马上反转成负的,然后负的又接着变为正的,总之,第一个90°之后,后面的值要加180.第2个90°之后,后面加270,妈的简直找惨了。

得到的数字大概为210 210 280 230 160 260 190 90 140 160 210

然后去下载一个量角器(PicPickPortable),发现2正好是90°,所以我直接就排除1了,然后一个个去量,下图举个例

对应7,然后其他的也依次如图

得到77085962457

所以flag为flag{77085962457}

Rev_Dizzy

一串简单的数学计算,首先是IDA F5,挺慢的,多等等,如果提示要逆的太大了,就自己百度一下,改一下

给了运算、给了最后比较的值,逆一下就行了,将所有复制出来,只留下运算的部分,然后写个脚本

s = [0x27, 0x3C, 0xE3, 0xFC ,46 ,65 ,7 ,94 ,98 ,-49 ,-24 ,-14 ,-110 ,128 ,-30 ,54 ,-76 ,-78 ,103 ,119 ,15 ,-10 ,13 ,-74 ,-19 ,28 ,101 ,-118 ,7 ,83 ,-90 ,102]f = open('1.txt','r').readlines()for i in range(len(f)):if(i != len(f)-1):f[i] = f[i][:-2]else:f[i] = f[i][:-1]f1 = ['']*len(f)for i in range(len(f)):f1[i] = f[len(f)-1-i]for i in range(len(f1)):tmp = f1[i].replace('byte_43841C', 's')if('+=' in tmp):tmp = tmp.replace('+=','-=')elif('-=' in tmp):tmp = tmp.replace('-=','+=')else:passexec(tmp)for i in range(len(s)):print(chr(s[i]%256),end='')

flag{Try_R3vers1ng_W1th_ScR!pt!}

shuffle_code的话提一下,后面就数织(补一句:我单推沃玛,沃玛8月13的视频就用了数织所以才知道这是数织的。见:沃玛的生活/第六期)来反推二维码。然后行数据是对的,但是每行所处的顺序错了,可以根据二维码的固定位置来反推出数织,然后会出现中间一部分无法确定的情况,用脚本爆破然后去try扫描二维码即可。

那有可能没有听懂是什么意思,这里再说明白一点。

就是首先把数织给的数,放到数织里面去解,会解出一张看起来毫无关系的图。但是你仔细看就会发现,行的数据是正确的,意思是二维码已经在图上了,但是这29行,被打乱了。

然后就需要根据二维码的性质,把开头的几行,最后的几行给手动恢复一下,中间的十几行,只需要上下移动即可,但是并不知道正确的图是哪样的,所以需要写脚本来爆破,然后每爆一张,就自动扫描一张,能扫出来的图就是flag。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。