meanwhile 发表于 2019-7-30 22:46

cybrics ctf 2019 Hidden Flag writeup

本帖最后由 meanwhile 于 2019-7-30 23:19 编辑

原题链接:https://cybrics.net/tasks/hiddenflag
类型:内存取证,reverse
这道题在比赛的时候没有做出来,后来在网上找了好久才发现了writeup,附上原文链接https://teamrocketist.github.io/2019/07/27/Reverse-CyBRICS-CTF-Quals-2019-Hidden-Flag/,这题感觉难在比较综合,首先内存取证以前就没有接触过,下手的方向比较少,卡在了从一个系统的内存dump中找出目标程序,在第一步就跌倒了。。。
使用内存取证工具volatility分析文件,用imageinfo得到结果如下:
https://attach.52pojie.cn//forum/201907/30/224318k05c61cumc05xtxh.png?l
选择使用最新的Win10x64_17134来分析,然后使用pslist,psscan,windows等命令查找当前打开的程序和进程,结果一无所获,没有找到可以程序,再使用filescan扫面打开的文件,也没有什么收获,使用modules命令显示内核加载的驱动
https://attach.52pojie.cn//forum/201907/30/224321n7lgh44emypa6hll.png?l
可以看到有两个驱动的位置比较奇怪,一个RamCapture…,看名字应该可以猜出是dmup出内存镜像的工具,另一个Flagostor.sys可能就是我们要找的目标,使用moddump把该文件dump出来,使用Ida打开程序的加载主函数如下
https://attach.52pojie.cn//forum/201907/30/224323rsvsqh4igvzva4va.png?l
图中打印函数之前的函数应该就是我们要分析的函数了,接下来的revese相对来说是比较简单的了
https://attach.52pojie.cn//forum/201907/30/224325wvojjndzew88jxon.png?l
https://attach.52pojie.cn//forum/201907/30/224327rjthbnt1n14t1t4t.png?l
https://attach.52pojie.cn//forum/201907/30/224513kdqw9ffw5dqw9xz2.png?l
先调用genetare生成一张表,然后加密函数直接简单的进行异或,加密和解密过程是一样,最后获得flag的脚本如下:
```
flag = map(ord,list('\x2D\xFB\x9B\xA8\x21\xF8\xB0\xB5\xFA\xEC\x58\xC5\xF9\x35\x57\xFA\xE1\x62\x0E\x19\x45\x7D\x33\x58\x6F\xC9\x88\x4F\x70\x82'))
nf=len(flag)
key=map(ord,list("qweasdzxc"))
table=[ i for i in range(256)]
nk=len(key)
def generate_table():
    a=0
    for i in range(256):
      a=(a+key+table)%256
      t=table
      table=table
      table=t
    print table
def decrypt():
    a1=0
    a2=0
    for i in range(nf):
      a1=(a1+1)%256
      a2=(a2+table)%256
      t=table
      table=table
      table=t
      t=table[(table+table)%256]
      flag=t^flag
generate_table()
decrypt()
print ''.join(map(chr,flag))
```
最后吐槽52竟然没有ctf的发帖板块
插图真烦   

Hmily 发表于 2019-8-30 17:43

@meanwhile 有ctf分类,插图有什么问题吗?
页: [1]
查看完整版本: cybrics ctf 2019 Hidden Flag writeup