首页
社区
课程
招聘
[原创]看雪.TSRC 2017CTF秋季赛第二题WriteUp
发表于: 2017-10-28 11:35 3341

[原创]看雪.TSRC 2017CTF秋季赛第二题WriteUp

2017-10-28 11:35
3341

2(A-B)+A-B+A + C- 0xE8F508C8 = 0

2(A-B)+A-B+A - C -0x0C0A3C68 = 0


首先两个验证函数有四个方程,写成C++代码大概就是

if (v1 && v0 && v1 != v0 && 17 * (v1 - v0) + v1 == -207009661 && 7 * (v1 - v0) + v0 == 866732163)
     if (v1 && v0 && v1 != v0 && 5 * (v1 - v0) + v1 == -1890567614 && 13 * (v1 - v0) + v0 == -279954878){
}


if (v1 && v0 && v1 != v0 && 17 * (v1 - v0) + v1 == -207009661 && 7 * (v1 - v0) + v0 == 866732163)
     if (v1 && v0 && v1 != v0 && 5 * (v1 - v0) + v1 == -1890567614 && 13 * (v1 - v0) + v0 == -279954878){
}

这实际上是个同余方程组,但是用 17 * (v1 - v0) + v1 == -20700966和 5 * (v1 - v0) + v1 == -1890567614作差,发现左边是偶数右边是奇数,无解。

接下来就要找实际验证位置,这里写一下我怎么注意到的。

1、在printf的时候可以看到上面有不少指令反汇编错了,猜测花指令/SMC。
2、在OD分析状态下中间突然冒出来一个retn,猜测下面可能是一个新的函数(虽然那个retn是有问题的)。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
// // 统计代码