CTF解题小记--心得记录1

CTF解题笔记 (Aircat)

RSA题

没什么好说的,解析后分解大素数,py脚本解密。(逆向不会考高难rsa吧,,大概)
参buu还是xctf的某一题

import gmpy2
import rsa e=65537
n=86934482296048119190666062003494800588905656017203025617216654058378322103517
p=285960468890451637935629440372639283459q=304008741604601924494328155975272418463 
phin = (p-1) * (q-1)d=gmpy2.invert(e, phin)
key=rsa.PrivateKey(n,e,int(d),p,q) with open("flag.enc","rb") as f:        f=f.read()        print(rsa.decrypt(f,key))

Unity

利用dnspy,找到Assmebly那个文件,直接开始分析。坐标题需要拖到od和ce里下断点找代码找坐标。虚拟化利用angr框架控制流去平坦化。自定义哈希解密py脚本/原程序爆破它不香么。 hashlib , pycrypto 和 cryptography ,当经过思考之后发现其实不一定要用到哈希,最理想的方案一般是把加密函数复现来进行爆破,经常碰见的情况就是直接调用系统库里的函数了。这时候直接拿来用就好。

HE-CTF2019

– cs这题是用.net写的一个程序。.net的直接用dnspy反编译,很好搞。题目一进去就用了混淆,并且表面上是普通的混淆,但实际上应该是加了虚拟化,和之前碰到的一万个while不同,此题是一万个case。于是试着用调试来看一下代码逻辑,但dnspy的调试也没找到什么教程,抱着学习用dnspy解.net的心态,稍稍思考了下就去看了题解。首先,dnspy的调试里应该选择在入口点中断 ,方便调试(get到一手),但是,在跟题解做复现的时候出现了问题,因为从题解的代码上来看,它的程序是没有虚拟化过的,或者是已经脱虚拟化了。于是题解两三步就能达到的事情,我费了很大劲。现在记一下我自己的理解:首先,目前遇到的题中,.net反编译基本不会有太多花里胡哨的的函数(like vs的编译方法),碰到的题里面函数,或者类/方法都不多,并且像此题,许多函数就只是单纯的判断,所以其实可以先进每个函数里逛一圈,直接找可疑代码。并且,从函数的参数上也可以发现蛛丝马迹,比如这题,最有用的两个函数,传参分别是string和string,string。目前理解,因为flag是字符串,或者是int,byte数组,所以在找函数的时候可以锁定有类似传参的函数。并且,调试依然是极其有用的一个东西,像这道题,可以直接越过一些函数,直接分析执行结果,Great。

巅峰极客2019

本次比赛死在了不懂rc4(我自己觉得),好好做题,好好搜集加密算法,看完爆破不就完事了吗。

V&N2020公开赛 – strangecpp

这题主函数就是个five,我是摸到通过主函数调用的全局数组摸到数据段才发现关键数组的,查看调用之后发现了加密函数,证实是加密数组。不过我自己做卡在了md5上,悲。对于md5这种东西是对字符串处理的东西一定要注意数据的表达形式啊。

你可能感兴趣的:(二进制CTF,逆向工程,程序career)