12.15 ciscn&“长城杯”铁人三项 部分题解
前言
做出来的两道密码到最后都只有五十分了(悲)
先把做出来的题分析一下,之后有时间了把剩下两道密码题补一下。
rasnd
一开始看标题以为是什么随机数(?),折腾老半天
题目内容:
怎么全是114514啊,他有什么用呢
题目附件:
1 | from Crypto.Util.number import getPrime, bytes_to_long |
其实是很简单的解方程
Part.1
个方程, 未知元 ( 可爆破, 难以爆破, 不可爆破)
直接解肯定是不行的,得想想办法
最开始想直接碰撞 的情况来着,但是下发的容器太慢了,跟有工作量证明一样慢(
尝试消元
先记
感觉像做齐次化一样:
这样就好办了
1 | def solve1(): |
Part.2
关键是 hint = pow(514*p - 114*q, n - p - q, n)
注意到
则根据欧拉定理有
联立 解之
1 | def solve2(): |
完整脚本:
1 | from Crypto.Util.number import getPrime, bytes_to_long, long_to_bytes |
fffffhash
题目内容
听说hash函数不可逆?我不信
题目附件
1 | import os |
解题
本题要实现一个哈希碰撞
经过查询魔数,可以搜到这个先乘再异或是一种 FNV hash
每一步的异或,都可以等价为加减某个数,因此可以写出式子
其中 都是小量,满足
可以构造多项式
构造格
1 | TARGET = 201431453607244229943761366749810895688 |
格基规约后再把 + 转为 ^ 即可
Kiwi
很有意思的题*(因为是唯一拿到的高分题目)*
给了一段流量包和病毒样本,解密 Windows 密码
感谢我们的逆向大神,tql!
IDA:

程序首先隐藏了自己的窗口,使用 mimikatz 来获取 SAM 等敏感信息,加密后通过 upload 函数上传,上传流量可以在流量包附件中查看。
流量包中有超级多的请求,导致一开始分析了老半天上传方式。只找到一个可疑的流量包

1 | l1Mvs8wZ1LI/v3Vup1zF8bzdp1B51zz0e0xdfIXNBQMOe1wFEg+Z03ljczfC1qGdp0Y6bWnJ7rUqnQrZmVT9nFPRXqYpURBxuBKInjI5Q2xVgs56q4VRCQWbiyv00Aw7D0CKEotHSy6sQAC1x3T9wDx6xPCioqx/0nwNgrvJnF1Oq7NFZsVpnAxaZC5BVfKSEttFPjYgv3uSfmtxeJg7pPCHmJ8qf/Sd7W7n3gKSB2BELb== |
像一段 base64,但实际上解不出来任何东西
通过瞎翻 IDA,发现上传数据前,先进行了一段加密,再进行了换表 base64 编码


表:d+F3DwWj8tUckVGZb57S1XsLqfm0vnpeMEzQ2Bg/PTrohxluiJCRIYAyH6N4aKO9
像我这种不熟悉逆向和 IDA 的 crypto 手来说,我一开始就是没看出来这个表是从 64h 开始而非从 28h 开始的(
加密后会在下一个函数中上传数据

到这里差不多就理清了,解换表 base64 后再解密
解换表
1 | # By MetaMiku |
解密
1 | // By txpoki |
拿到明文
1 | User=Administrator |
最后的 NTLM=23d1e086b85cc18587bbc8c33adefe07 找在线网站破解
检验 https://www.xdtool.com/ntlm
300分,get (`・ω・´)
__END__