首页
社区
课程
招聘
[原创]CTF2017_fpu 分析过程
发表于: 2017-10-27 13:46 3290

[原创]CTF2017_fpu 分析过程

2017-10-27 13:46
3290

CTF2017_fpu 分析过程

1.IDA分析

根据字符串常量" Please input your code: ",找到输入字符串的地方

.text:00401050 var_C           = dword ptr -0Ch

.text:00401050

.text:00401050                 sub     esp, 0Ch

.text:00401053                 push    offset aCodedByFpc_ ; " Coded by Fpc.\n\n"

.text:00401058                 call    sub_413D42

.text:0040105D                 add     esp, 4

.text:00401060                 push    offset aPleaseInputYou ; " Please input your code: "

.text:00401065                 call    sub_413D42

.text:0040106A                 add     esp, 4

.text:0040106D                 lea     eax, [esp+0Ch+var_C]

.text:00401071                 push    eax

.text:00401072                 push    offset aS       ; "%s"

.text:00401077                 call    _scanf

.text:0040107C                 lea     eax, [esp+14h+var_C]

.text:00401080                 add     esp, 14h

.text:00401083                 retn

.text:00401083 sub_401050      endp

2.随便输入12345678,找到两个处理返回值的地方

.text:0040101C                 call    sub_401090

.text:00401021                 call    sub_4010E0

void sub_401090()

{

  int v0; // [sp+4h] [bp-8h]@0

  int v1; // [sp+8h] [bp-4h]@0

  if ( v1 && v0 && v1 != v0 && 5 * (v1 - v0) + v1 == 0x8F503A42 && 13 * (v1 - v0) + v0 == 0xEF503A42 )

    --dword_41B034;

}

void sub_4010E0()

{

  int v0; // [sp+4h] [bp-8h]@0

  int v1; // [sp+8h] [bp-4h]@0

  if ( v1 && v0 && v1 != v0 && 17 * (v1 - v0) + v1 == 0xF3A94883 && 7 * (v1 - v0) + v0 == 0x33A94883 )

    --dword_41B034;

}

初次采用穷举

写了个C程序

X 和Y从0x20202020到0x7F7F7F7F7F,穷举无果。

后来根据公式化简,采用计算器

11(y-x)=c0000000  4(y-x)=70000000    y-x = 1c000000,

算出一个x= 0xe7503a42,y = 03503a42,多次验证不正确。

3.

后来拖动IDA,发现00403131可疑。

.text:00413131                 db 83h, 0C4h, 0F0h

.text:00413134                 dd 20712A70h, 0F1C75F2h, 28741C71h, 2E0671DDh, 870F574h


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

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