JarvisOJ RE Classical CrackMe2

.net程序,使用dnSpy动态调试。

  • start开始调试,stepover找到程序入口点:
    JarvisOJ RE Classical CrackMe2_第1张图片
  • 这个名字奇怪的类应该很关键,点进去看看,发现关键代码:
    JarvisOJ RE Classical CrackMe2_第2张图片
  • 下断点调试发现text是我们输入的字符串,text2是text经过某函数处理之后的字符串,当text2为==后面的函数返回的字符串时,弹窗flag,进到那个函数里去看一下,并在返回值处下断点:
    JarvisOJ RE Classical CrackMe2_第3张图片
  • 现在回去看text是怎么变成text2的:
    JarvisOJ RE Classical CrackMe2_第4张图片单步调试,可以发现bytes数组是密钥pctf2016pctf2016pctf2016pctf2016,bytes2是我们输入的字符串。text2是text经过AES加密后,再经过base64转码得到的。
    JarvisOJ RE Classical CrackMe2_第5张图片
  • payload:
import base64 
from Crypto.Cipher import AES 
 
key = 'pctf2016pctf2016pctf2016pctf2016' 
cipher = 'x/nzolo0TTIyrEISd4AP1spCzlhSWJXeNbY81SjPgmk=' 
cipher = base64.b64decode(cipher) 
aes = AES.new(key, AES.MODE_ECB) 
print aes.decrypt(cipher)
  • 参考
    (Jarvis Oj)(Re) Classical_CrackMe2

你可能感兴趣的:(CTF)