-
-
[原创]CTF2019晋级赛Q2第四题分析(qwertyaa)
-
2019-6-13 05:51 2591
-
程序内部动态加载了一段代码,并执行。
直接在OD中在加载好后的位置下断,将代码段修改的内容选择并复制到文件即可进行静态分析。
里面实现了一个简单的256进制的16位数的高精度运算。
根据OD结果与静态分析结果,该程序将密钥拆成前、后8位两组,分别异或特定值后得到高精度数值 x
与 y
。
可以发现,程序内部在求一个大小由限制的不定方程 x^2-7y^2=8
且减法没有借位。
可以直接用 Mathematica 计算,如下:
最后用 Python 将两个数字异或特定之后拼接回原始密钥:
keybox1=[0]*8 keybox2=[0]*8 keybox2[4] = 0x81; keybox1[3] = 0x81; keybox2[0] = 0x16; keybox2[1] = -106; keybox2[2] = -116; keybox2[3] = -29; keybox2[5] = -104; keybox2[6] = 110; keybox2[7] = 100; keybox1[0] = 0x84; keybox1[1] = 8; keybox1[2] = -36; keybox1[4] = 0xBE; keybox1[5] = 77; keybox1[6] = 72; keybox1[7] = 79; x=385044246406735194 y=145533045678356702 filt=0xff incr=1 ans='' for i in range(8): ans+=chr(((x&filt)/incr)^(keybox2[i]&0xff)) filt<<=8 incr<<=8 filt=0xff incr=1 for i in range(8): ans+=chr(((y&filt)/incr)^(keybox1[i]&0xff)) filt<<=8 incr<<=8 print ans
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法
赞赏
他的文章
看原图