techrealfx-live3什么交易商?

  1. 全局变量加密使用 AES 在全局变量被访问前,解密数据到栈上。变量被范围后加密数据,写回全局变量,通过调试可以获取解密后的数据
  2. 常数加密对 Store、ICmp 指令的常数z,令 z=x+y 或 z=x^y ,将 x 存放于全局变量中,y当成指令的 op ,这一步可以通过将全局变量设置成 const 让 ida 计算出数值

将网页内容保存为lyric-.json文件即可。

得到txt文档的内容:

换用其他软件查看,发现存在空白字符隐写:

利用工具解密即可。注意选择正确的解码设置。可以使用十六进制编辑器的查找功能确定使用的编码字符。

由于本鶸出题设计的太不严谨,考虑不够周全,导致比赛中多次出现非预期,因此不得不在比赛过程中对附件进行多次修改,再加上题目附件过大(根本压缩不动),多次下载浪费了做题师傅许多的时间和空间,带来了不便和不好的做题体验,我对此表示诚挚的歉意,还请各位师傅多多包涵谅解!

  • vmware虚拟机各文件结构与用途

解压题目文件,可以发现一个装有flag的加密压缩包和一个完整的用于vmware的虚拟机,双击vmx文件,打开发现虚拟机被加密,所以首先要破解加密

在github上可以找到一个项目:

使用这个脚本可以进行爆破,但是用其自带的字典爆破无法得到密钥,所以接下来我们要寻找字典

观察文件夹中的文件,我们需要先了解一下这些文件的用途,可参考

  • .vmx.lck:磁盘锁文件,用于防止多台虚拟机同时访问一个.vmdk虚拟磁盘文件带来的数据丢失和性能下降
  • .iso:虚拟机的镜像文件
  • .nvram:存储虚拟机BIOS状态的文件
  • .vmdk:虚拟磁盘文件,相当于电脑里的硬盘,存储了虚拟机内的系统和所有文件
  • .vmsd:存储虚拟机的快照信息和元数据
  • .vmx:虚拟机的配置文件,可以通过打开此文件来启动系统,存储了启动虚拟机所需要的配置信息
  • .vmxf:虚拟机的补充配置文件
  • .log:存储虚拟机活动日志的文件,可用来排查故障

我们依次观察这些文件,可以发现在 .vmxf 文件中有这样一句话

正常的vmxf文件是不会有这样一句话的,很明显是出题人故意修改过的,用来暗示文件被破坏,需要进行修复

附件中有三个log文件,单纯查看并不能发现什么,但是如果用十六进制编辑器或者vim查看,就可以发现在最大的log文件中存在一些不可见字符

提取隐写的信息,即可得到一份字典,顺便还原出没有经过隐写的log

其实这里也有一个快速确定log文件的方法:正常导出加密虚拟机时,导出的文件并不会含有log文件,而这里的log文件很明显就是出题人后加进去的

通过使用提取出来的字典,利用刚刚提到的脚本进行爆破,即可得到密钥:kx4s3a

用密钥移除加密后,打开虚拟机,发现提示客户文件未指定虚拟机操作系统

所以我们需要先找到虚拟机的操作系统,在镜像文件中一定会有记录,打开iso文件,大概翻一翻就可以看到CentOS,如果用010的话直接打开加载模板也能看到

修改操作系统为Linux CentOS 7 64 位,再次尝试打开虚拟机,发现提示Operating System not found,百度一下报错可以大概了解到是CD/DVD指定目录的问题,但是我们再观察一下这个虚拟机再vmware中显示的配置,和其他的虚拟机相对照,可以发现有很多设置都缺少了

有关虚拟机配置的信息,我们上文已经提到了在 .vmx 文件中,用文本编辑器打开vmx文件,可以看到如下的信息

如果打开不是这样的话,先把虚拟机的加密移除,就可以看到了

有关vmx文件中的这些配置选项的含义,可以参考:

当然也可以参考自己其他虚拟机的vmx文件,无论是查看相关文章,还是自己对比其他的虚拟机,都可以发现配置选项中是没有XXX这一选项的,所以很明显vmx文件已经损坏,需要进行修复,修复方法可参考,需要用到log文件,在log中寻找如下两行信息

将这两行中间的信息复制到vmx文件中,移除前面多余的时间信息和结尾用于隐写的空白字符,保留如下格式,调整为左对齐

修改后保存即可,再次尝试打开虚拟机,出现了新的报错:指定的文件不是虚拟磁盘

在vmx文件已经修复好的情况下,出现这种报错,那就是虚拟磁盘文件,即vmdk文件出现了问题,所以接下来需要修复vmdk,有关vmdk的结构详解可参考:

本题的虚拟机共有7个vmdk,一个很小的和六个分别编号1~6的较大的,其中较小的文件可以用文本编辑器打开,且内容可读,结构大体由三部分组成

参考文档,对比正确的vmdk,可以发现第一部分缺少了versionparentCID和磁盘文件的编号,文档中也有写

version的值默认为1,本题虚拟机并没有快照,所以parentCID=ffffffff,再按顺序补充编号s001~s006,修改后保存,再次打开发现仍然报错,继续检查其余的vmdk文件,编号1~6的vmdk文件有固定的文件头,大小为512字节,具体组成如下表:

0
0

我们用十六进制编辑器打开vmdk,可以发现这些文件缺少了Signature和version(默认为1)共8字节的内容,补上4B 44 4D 56 01 00 00 00,继续查看,还可以发现第73~76位用于校验文件传输是否发生损坏的行结束符也没有,查ascii表或者对照正常的vmdk,都可以得到对应的16进制字符串0A 20 0D 0A,修改后保存,再次尝试即可正常打开虚拟机

用题目所给的guest用户登录,发现在当前目录就有一个假的flag,提示flag不在这里,查看history,发现其中提示

我们需要进入root文件夹,但guest用户没有权限进入,查看sudo的版本可以发现是最新版,所以也并不存在提权漏洞,需要换一种思路

CentOS存在单用户模式,我们可以利用单用户模式来修改root的密码:

依次执行以下几条命令:

  • 修改语言环境为英文,防止乱码:LANG=en

重启系统后即可用刚刚修改过的密码登录root,在root文件夹下得到压缩包密码

在当前目录下还可以看到一个 7-f1le,取小写md5即是2.0的最后一部分flag

解压即可得到真正的flag

我看也有许多队伍的师傅是采用替换vmx,修改vmdk配置文件的方式对虚拟机进行修复,这也是一种很好的方法,而且比我设计的预期解题方式要简单一些。其实我设计这道题的目的,就是想让大家更多了解虚拟机各个配置文件的用途,了解并学习虚拟机损坏时的修复方式和当root密码忘记如何获得root权限等知识点,私认为和实际生活的联系还是比较大的,也希望各位做题的师傅能通过本题学到新的知识 :)

本题的解法涉及到目前 CPython 设计的安全漏洞。我们将在 Python 安全响应团队回应与修复之后,放出此题题解。

shellgen两道题起源于一个有趣的命题:无字母数字webshell怎么写能最短,有没有程序化的生成方式,如果有,该怎么写?
题目本身有点偏算法,但是由于判定松,无时间限制(五秒,很长很长了),成功拿到flag的队伍还蛮多的

首先构造出a,对于每个字符都逐个递增,逐个拼接,是最原始暴力的解法:

# 组成由0与9组成的索引 # 这里有一点点小细节

上面这个小算法生成php代码的长度很大程度上取决于hash_char,是不是有种哈夫曼的味道?

取target中所有最长不下降子序列,如下:

得到两条不下降的序列,然后根据原有序列依次从每个序列的头部开始输出。

这里还涉及到一个细节,就是变量名如何取。觉的好玩的话可以思考思考。

也有更好的算法,归根结底都是减少++的次数与新变量的个数。比如“标答”中(见GitHub)的变量名就可以继续缩短。

这道题在实际比赛中本来就是作为shellgen的“好玩版”放在那里的,所以即使出现了用简单办法通过的队伍也没有进一步加强(其实做出来的25个队伍中绝大多数都是用很暴力的办法过的,由于只check了一组数据,可能会随机到对暴力算法非常友好的数据,所以多交几次大概也就过了),反而放宽了一些限制(当然有个限制是因为我自己的问题,再次抱歉),大家也就,开心就好(

}

我要回帖

更多关于 凯特合约交易所 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信