-
-
[原创]看雪CTF.TSRC 2018 团队赛 第二题 半加器 WP
-
发表于: 2018-12-24 16:28 3809
-
看雪CTF.TSRC 2018 团队赛 第二题 半加器 这题直接分析流程细节的话,发现会有很深层的调用 所以直接使用硬件断点法追踪数据变化过程,可以省去不少力气 入手点: 004A19D8 68 BC255B00 PUSH Exam.005B25BC ; ASCII "Please Input:" 004A19DD 68 E0315F00 PUSH Exam.005F31E0 004A19E2 E8 5FB3FEFF CALL Exam.0048CD46 004A19E7 83C4 08 ADD ESP,8 004A19EA 6A 1E PUSH 1E 004A19EC 68 68305F00 PUSH Exam.005F3068 ; 输入值 004A19F1 68 9C225B00 PUSH Exam.005B229C ; ASCII "%s" 004A19F6 E8 F3A6FEFF CALL Exam.0048C0EE 004A19FB 83C4 0C ADD ESP,0C 004A19FE 68 68305F00 PUSH Exam.005F3068 ; 输入值 004A1A03 E8 9E8FFEFF CALL Exam.0048A9A6 004A1A08 83C4 04 ADD ESP,4 004A1A0B 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 004A1A0E 837D F8 1E CMP DWORD PTR SS:[EBP-8],1E //长度检查<30 004A1A12 7F 06 JG SHORT Exam.004A1A1A 004A1A14 837D F8 0A CMP DWORD PTR SS:[EBP-8],0A //长度检查>=10 004A1A18 7D 16 JGE SHORT Exam.004A1A30 004A1A1A 68 CC255B00 PUSH Exam.005B25CC 004A1A1F E8 B78CFEFF CALL Exam.0048A6DB 004A1A24 83C4 04 ADD ESP,4 004A1A27 6A 00 PUSH 0 004A1A29 E8 46A8FEFF CALL Exam.0048C274 004A1A2E EB 4E JMP SHORT Exam.004A1A7E 004A1A30 68 68305F00 PUSH Exam.005F3068 ; 输入值 004A1A35 6A 1E PUSH 1E 004A1A37 A1 88305F00 MOV EAX,DWORD PTR DS:[5F3088] 004A1A3C 50 PUSH EAX 004A1A3D E8 7DCBFEFF CALL Exam.0048E5BF 004A1A42 83C4 0C ADD ESP,0C 004A1A45 B8 01000000 MOV EAX,1 004A1A4A 6BC8 07 IMUL ECX,EAX,7 004A1A4D 8B15 88305F00 MOV EDX,DWORD PTR DS:[5F3088] 004A1A53 0FBE040A MOVSX EAX,BYTE PTR DS:[EDX+ECX] 004A1A57 83F8 41 CMP EAX,41 //第8个字符必须是'A' 004A1A5A 74 14 JE SHORT Exam.004A1A70 004A1A5C 68 CC255B00 PUSH Exam.005B25CC 004A1A61 E8 758CFEFF CALL Exam.0048A6DB 004A1A66 83C4 04 ADD ESP,4 004A1A69 6A 00 PUSH 0 004A1A6B E8 04A8FEFF CALL Exam.0048C274 004A1A70 A1 88305F00 MOV EAX,DWORD PTR DS:[5F3088] //对此输入数据下硬件断点 004A1A75 50 PUSH EAX 004A1A76 E8 29B9FEFF CALL Exam.0048D3A4 硬件断点第二次断下来会在这里: 0049DC30 0FBE08 MOVSX ECX,BYTE PTR DS:[EAX] 0049DC33 83F1 1F XOR ECX,1F 0049DC36 8B55 08 MOV EDX,DWORD PTR SS:[EBP+8] 0049DC39 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8] 0049DC3C 880A MOV BYTE PTR DS:[EDX],CL 0049DC3E ^EB D0 JMP SHORT Exam.0049DC10 会发现第8个字符变成了'#',并把每个字符xor 0x1F,处理完之后再对数据下硬件断点 然后再断下来后就能看到和"urj}pux<}n{iqyrh"比较 所以把"urj}pux<}n{iqyrh"异或0x1F,再把第8个字符替换成'A',即可得到最后结果: jmubojgAbqdvnfmw
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
他的文章
看原图
赞赏
雪币:
留言: