DASCTF 2023 11月月赛 WP&复现记录
DASCTF的11月月赛。misc还算是能做两道的,web题没什么思路,尝试赛后按学长打的复现一下吧。
先把misc的几道写了,web题的记录等复现完给补上。
Misc
ez_forensics
很简单的取证,但似乎除了咱之外都没什么人愿意做,白捡1000分。
一共两个附件,一个内存镜像mem.vmem,另一个附件2,刚好100MB大小,看起来很像加密容器。
肯定要先从内存镜像下手。用volatility随便看看。
volatility_2.6_win64_standalone.exe -f .\mem.vmem --profile=Win7SP1x64 pslist |
... |
可以从pslist中看到TrueCrypt进程。那附件2大概就是TrueCrypt加密容器。如果在dump内存时加密容器是挂载状态的,或者刚刚卸载并且没有设置强制擦除密钥缓存,那么加密容器的密钥应该还存留在内存中。尝试用volatility找密钥。
volatility_2.6_win64_standalone.exe -f .\mem.vmem --profile=Win7SP1x64 truecryptsummary |
Password CZYWS_s4zyd_User at offset 0xfffff88004298ee4 |
简单用truecryptsummary就能提取出密码CZYWS_s4zyd_User
。用VeraCrypt把加密容器挂载上。
Directory: V:\ |
容器中只有一个ECB文件,并没有咱要找的东西。猜测这个ECB指的是文件是通过AES-ECB模式加密的,密码就试试用CZYWS_s4zyd_User
,刚好16字节。
用赛博厨子就能解密。明文提示这个加密容器有里分区,要用这个文件的解密后的文件来打开。
里分区是TrueCrypt和VeraCrypt的一个特性。一个加密容器或者加密盘可以设置表分区和里分区,分别由两个密码对应。假密码可以解开表分区,而里分区需要用另一个密码才能解密。并且建立里分区后再往表分区写入更多的数据就会对里分区中的数据造成破坏。从而达到伪装和保护的目的。
因此想要打开里分区就必须要找到另一个密码,但这个密码其实不用咱再去内存镜像里瞎找了。根据ECB文件解密出来的明文的内容提示,用这个文件解密后的文件作为密钥文件再打开加密容器,就可以看到一个10MB大小的里分区了。
Directory: W:\ |
这个专家名单.xlsx就是咱要找的东西,按照题目要求把这个文件算个md5值就能作为flag交了。
DASCTF{c2c68e18fa4f01a4877a586104e7c721}
IceTea
简单的流量分析。刚开赛一看到本来想秒一下来着,但学长秒得比咱快…
直接用wireshark打开。里面都没啥东西,http协议的总共就四个包。一眼Base64模式蚁剑webshell流量,直接把参数substr(,2)一下再用Base64解码就能还原。
从第一个请求就可以看到它传了一段十六进制数据,就是个ELF文件。别的都不用看了,直接跳到第四个请求,从中挑一个长度大概差不多的参,Base64解码:
cd "/www/wwwroot/DAS202310.com";cat IceTea.txt;echo 27d667b0c949;pwd;echo f0e52b6ed |
命令内容就是cat flag。再看看这个请求对应的响应,Base64解码一下。
o~^reftqRrg4QB9zvZQzwf50xn51CZQxSf51gZPzxj5zhjF1CI75qE=27d667b0c949 |
“27d667b0c949”前面的一段大概就是cat到的flag,但这一段就不能再直接用Base64解码出来了,大概这个是用刚才那个elf程序加密过的。先看看上一个请求,把其中一个长度大概差不多的参数用Base64解码看一眼。
cd "/www/wwwroot/DAS202310.com";./ezbase e flag.txt IceTea.txt;echo 27d667b0c949;pwd;echo f0e52b6ed |
果然就是用刚才传入的程序处理了一下flag再写入的文件。分析一下这个叫ezbase的elf,用die可以看到它是经过upx打包过的,先upx解包(需要用upx4以上的版本,upx3.9.5没法解),然后尝试用ida分析,其实就是简单的换表Base64,试试直接把Base表复制出来直接给赛博厨子解密。
DASCTF{Ice_tea_is_not_a_loser_drink!}
在队里一直被当成做misc的,刻板印象了属于是。以后还是别在misc上浪费太多时间了,下次比赛在赛中再多看看web吧。