-
-
[原创]CTF2017秋季赛第二题解法
-
发表于: 2017-10-27 23:26 2846
-
这题主要是巧妙在思路上,正常流程是,提供的8字节的缓冲区,然后满足两个函数(每个函数里标志减1,为0跳转成功),共4个二元一次方程组即成功.由于题目要求必须是字母+数字,所以穷举有3C^8次方种可能.但是出题者的本意并不是让我们这样做,不然就太low了.所以暴力搜索保存成功标志的地址,定位到乱码中,由于乱码处于代码区,所以猜测是加花了,又因为缓冲区存在溢出漏洞,移动到乱码的起始端,发现地址是0x00413131,也就是"11A",满足输入,所以真正的算法在乱码区.注册码形式是xxxxyyyyzzzz11A.还原花指令可以借助脚本,不过为了一个crackme写个脚本开销太大,所以直接动态跟就可以了
(v0-v1)*4+v0+v2-EAF917E2 =0 (v0-v1)*3+v0+v2-E8F508C8 =0 (v0-v1)*3+v0-v2-C0A3C68 =0 v0 = 7473754A = tsuJ v1 = 726F6630 = rof0 v2 = 6E756630 = nuf0 连接起来就是'Just0for0fun11A'vaild_1:
00413131 83C4 F0 add esp,-0x10
00413150 33C0 xor eax,eax
00413184 A3 34B04100 mov dword ptr ds:[0x41B034],eax
004131BA 58 pop eax
004131EB 8BC8 mov ecx,eax
0041321F 58 pop eax
00413254 8BD8 mov ebx,eax
00413289 58 pop eax
004132B5 8BD0 mov edx,eax
004132AD 8BD0 mov edx,eax
004132E2 8BC1 mov eax,ecx
00413316 2BC3 sub eax,ebx
00413349 C1E0 02 shl eax,0x2
00413380 03C1 add eax,ecx
004133B5 03C2 add eax,edx
004133E9 2D E217F9EA sub eax,0xEAF917E2
00413420 /0F85 DD060000 jnz ctf2017_.00413B03(fail)
vaild_2:
00413455 03C1 add eax,ecx
00413489 2BC3 sub eax,ebx
004134BF 8BD8 mov ebx,eax
004134F3 D1E0 shl eax,1
00413525 03C3 add eax,ebx
00413559 03C1 add eax,ecx
0041358F 8BC8 mov ecx,eax
004135C3 03C2 add eax,edx
004135F7 2D C808F5E8 sub eax,0xE8F508C8
0041362E /0F85 CF040000 jnz ctf2017_.00413B03(fail)
vaild_3
00413665 8BC1 mov eax,ecx
0041365D 8BC1 mov eax,ecx
004136A7 2BC2 sub eax,edx
004136D8 2D 683C0A0C sub eax,0xC0A3C68
00413703 /75 04 jnz short ctf2017_.00413709(fail)
(v0-v1)*4+v0+v2-EAF917E2 =0
(v0-v1)*3+v0+v2-E8F508C8 =0
(v0-v1)*3+v0-v2-C0A3C68 =0
v0 = 7473754A = tsuJ
v1 = 726F6630 = rof0
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
- [原创]CTF2018第六题writeup 3672
- [原创]CTF2018第三题writeup 2915
- [原创]CTF2018第二题writeup 2170
- [原创]CTF2017秋季赛第二题解法 2847
- [原创]第一题 Helllo-CTF 1853