首页
社区
课程
招聘
[原创]CTF2019晋级赛Q2第四题分析(qwertyaa)
2019-6-13 05:51 2591

[原创]CTF2019晋级赛Q2第四题分析(qwertyaa)

2019-6-13 05:51
2591

程序内部动态加载了一段代码,并执行。

 

直接在OD中在加载好后的位置下断,将代码段修改的内容选择并复制到文件即可进行静态分析。

 

里面实现了一个简单的256进制的16位数的高精度运算。

 

根据OD结果与静态分析结果,该程序将密钥拆成前、后8位两组,分别异或特定值后得到高精度数值 xy

 

可以发现,程序内部在求一个大小由限制的不定方程 x^2-7y^2=8 且减法没有借位。

 

可以直接用 Mathematica 计算,如下:

 

MMA

 

最后用 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虚拟机自动化脱壳的方法

收藏
点赞1
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回