WCTF2018

第一次近距离感受到了巨佬们的气场,产生了对大师赛巨佬们的敬佩之情,体会到了菜鸡和鹏鸟之间的差距,除了膜,似乎已经没有其他能描述我对巨佬们的敬佩。WCTF的赛题质量之高,设计思路巧妙,可以说每一道题目都能get到实实在在的东西,相当的有意思。本场比赛仅做出truth一题,简单记录一下学习笔记。

truth

.net的程序逆向,静态分析三次矩阵求逆即可得到flag,然而Is it real flag?真的会这么简单么?

正确的思路:

  1. resources中修改了func2中的代码,但是诸如dnspy之类调试工具无法调试代码。
  2. windbg调试.net程序,见微软官方的如何使用windbg调试托管代码 Debugging Managed Code
  3. 成功载入SOS debugging extension和mscordacwks.dll,去调试托管代码,!bmpd下断点,使用方法见!sos.help。

以下操作均在windbg已经能够正确载入符号的前提下进行。

1
2
3
4
5
6
7
sxe ld:clr 
g
.reload /f
.cordll -ve -u -l
!lmv -mclr
!sos.help
!bpmd WCTF2018Rev_Release.exe WCTF2018Rev.Properties.Resources..cctor #执行时需要先让程序跑起来,g一下

成功下断点运行以后,都是以前windbg调试的方法了,撸汇编就行了,程序进行了两次代码的自解密,然后写逆算法,求到flag。