-
-
[原创]CTF2017第二题分析(qwertyaa)
-
发表于: 2017-10-27 14:27 2841
-
首先下载,拖入ida和od分析,以为是要使输入8个字符满足:
(a-b)*4+(a+c)=0xeaf917e2u
(a-b)*2+(a-b)+a+c==0xe8f508c8u
(a-b)*2+(a-b)+a-c==0x0c0a3c68u
观察后不难发现后两个式子可以解出c,然后去解出a和b:(大概根据数论理论,+-*操作假装没有算术溢出是没有关系的)
a=0x7473754au,b=0x726f6630u,c=0x6e756630u
改成字符,加上栈溢出攻击需要的11A,得到我们想要的key:Just0for0fun11A
v1 && v0 && v1 != v0 && 5 * (v1 - v0) + v1 == -1890567614 && 13 * (v1 - v0) + v0 == -279954878 && v1 && v0 && v1 != v0 && 17 * (v1 - v0) + v1 == -207009661 && 7 * (v1 - v0) + v0 == 866732163
v1 && v0 && v1 != v0 && 5 * (v1 - v0) + v1 == -1890567614 && 13 * (v1 - v0) + v0 == -279954878 && v1 && v0 && v1 != v0 && 17 * (v1 - v0) + v1 == -207009661 && 7 * (v1 - v0) + v0 == 866732163
然后估摸着要另辟蹊径,莫非其实允许输入16个字符使得他们分别满足解?
尝试了一下得到以下结果:
马上反应过来有栈溢出啊,仔细一看scanf("%s",...),又看到处理成功的汇编代码的地址是0x40102F,于是得到key:123456781234/^P@(当时怀疑是不是多解?)
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
他的文章
看原图
赞赏
雪币:
留言: