文档说明
作者:SwBack
时间:2022-5-6 15:06
说明:WP中关于flag的顺序并无排版,自行判别flag序列
挑战说明
- 一个恶意脚本加密了我系统上的一条非常机密的信息。你能帮我恢复信息吗?
- A malicious script encrypted a very secret piece of information I had on my system. Can you recover the information for me please?
注意1: 此挑战仅由 1 个标志组成。旗帜分成两部分。
注意2: 您需要标志的前半部分才能获得第二部分。
您将需要这个额外的工具来解决挑战,
$ sudo apt install steghide
本实验的标志格式为:inctf{s0me_l33t_Str1ng}
挑战文件:MemLabs_Lab3
解题过程
提取题目信息: 恶意脚本、steghide(图像/音频隐写工具)
steghide 工具隐写/提取 均需要密码 flag前部分应该为密码flag前半部分
获取系统信息
volatility -f MemoryDump_Lab3.raw imageinfo
查看进程
发现ie浏览器 notepad等工具
volatility -f MemoryDump_Lab3.raw --profile=Win7SP1x86_23418 pslist
查看浏览器记录
发现py脚本和一个txt
volatility -f MemoryDump_Lab3.raw --profile=Win7SP1x86_23418 iehistory
搜索这两个文件
volatility -f MemoryDump_Lab3.raw --profile=Win7SP1x86_23418 filescan |grep "vip.txt\|evilscript"
提取该文件
volatility -f MemoryDump_Lab3.raw --profile=Win7SP1x86_23418 dumpfiles -Q 0x000000003de1b5f0 -D ./
volatility -f MemoryDump_Lab3.raw --profile=Win7SP1x86_23418 dumpfiles -Q 0x000000003e727e50 -D ./
加密文本
am1gd2V4M20wXGs3b2U=
py脚本
import sys
import string
def xor(s):
a = ''.join(chr(ord(i)^3) for i in s)
return a
def encoder(x):
return x.encode("base64")
if __name__ == "__main__":
f = open("./vip.txt", "w")
arr = sys.argv[0]
arr = encoder(xor(arr))
f.write(arr)
f.close()
对其反过来操作即为解密
import sys
import string
def xor(s):
a = ''.join(chr(ord(i)^3) for i in s)
print a
def decode(x):
return x.decode("base64")
if __name__ == "__main__":
a = 'am1gd2V4M20wXGs3b2U='
xor(decode(a))
解密得到flag前半部分inctf{0n3_h4lf
flag后半部分
上面获得flag前半部分,根据工具的特性获得后半部分
搜索图片/音频
根据所在目录判断得到一张图片
volatility -f MemoryDump_Lab3.raw --profile=Win7SP1x86_23418 filescan |grep "gif\|png\|jpg\|jpeg\|mp3\|wav"
解密图片
steghide extract -sf 22.jpeg -p inctf{0n3_h4lf
拼合得到flag inctf{0n3_h4lf_1s_n0t_3n0ugh}