-
-
[原创]看雪.TSRC 2017CTF秋季赛第二题WriteUp
-
2017-10-28 11:35 2780
-
首先两个验证函数有四个方程,写成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){ }
这实际上是个同余方程组,但是用
17 * (v1 - v0) + v1 == -20700966和
5 * (v1 - v0) + v1 == -1890567614作差,发现左边是偶数右边是奇数,无解。
接下来就要找实际验证位置,这里写一下我怎么注意到的。
1、在printf的时候可以看到上面有不少指令反汇编错了,猜测花指令/SMC。
2、在OD分析状态下中间突然冒出来一个retn,猜测下面可能是一个新的函数(虽然那个retn是有问题的)。
3、删除OD分析,可以看到00413131处有一个add esp,-10,而esp就是输入字符串位置,那么基本就实锤了。
当然这里是要利用scanf %s的栈溢出覆盖返回地址到00413131,所以flag最后四位是11A(还有自动补充的\0)
接下来就没什么说的了,一步一步跟呗,这里贴当时随手记的过程
key = 01234567890111A 0123 4567 8901 0111A A B C D esp - 4 : 00413131 esp - 8 : C esp - 12 : B esp - 16 : A mov eax,0 mov [0041B034],eax pop eax ; A mov ecx,eax pop eax ; B mov ebx,eax pop eax : C mov edx,eax ; ecx: A ebx:B edx:C mov ecx,eax sub eax,ebx ; A-B shl eax,2 ; (A-B)<<2 add eax,ecx; (A-B)<<2 + A add eax,edx; (A-B)<<2 + A + C sub eax,0xEAF917E2 ; (A-B)<<2 + A + C - 0xEAF917E2 jnz end add eax,ecx sub eax,ebx; A-B mov ebx,eax ; !!!!! ebx = A-B shl eax,1 ; (A-B)<<1 add eax,ebx ; 2(A-B)+A-B add eax,ecx ; 2(A-B)+A-B+A mov ecx,eax ; !!!!! ecx = 2(A-B)+A-B+A add eax,edx ; 2(A-B)+A-B+A + C sub eax,0XE8F508C8; 2(A-B)+A-B+A + C- 0xE8F508C8 jnz end mov eax,ecx ; eax = 2(A-B)+A-B+A sub eax,edx ; 2(A-B)+A-B+A - C sub eax,0x0C0A3C68; 2(A-B)+A-B+A - C -0x0C0A3C68 mov eax,D ; pop eax xor eax,0X8101 ; D^0x8101 mov edi,eax xor eax,eax stos es:[edi] ; edi = 0041B030 eax = 0 call 00413841 pop eax ; eax = 00413835 push eax mov edi,eax push 4e000969 pop eax ; eax = 4e000969 xor eax,edx ; 4e00969^C stos es:[edi] ; edi = 00413835 eax = 4e00969^C xor eax,10A3E; 4e00969^D^0x10A3E ......省去一亿个废话 end: pop eax ; D xor eax,0x1210E ; D^0x1210E xor eax, [41B032] ; D^0x1210E^0 jmp 0040103F ; bad-register code
(A-B)<<2 + A + C - 0xEAF917E2 = 0
2(A-B)+A-B+A + C- 0xE8F508C8 = 0
2(A-B)+A-B+A - C -0x0C0A3C68 = 0
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
他的文章
[原创]用麒麟框架深入分析实模式二进制文件
10790
[求助]游戏保护怎么入门?
4203
看原图