-
-
WannaLOL第一题wp
-
发表于: 2017-6-2 12:49 2138
-
已经提示无壳,直接od载入,下bpx GetDlyItemTextA断点
004011F4 $ 55 push ebp 004011F5 . 8BEC mov ebp,esp 004011F7 . 83EC 1C sub esp,0x1C 004011FA . 8D45 E4 lea eax,dword ptr ss:[ebp-0x1C] 004011FD . 6A 15 push 0x15 ; /Count = 15 (21.) 004011FF . 50 push eax ; |Buffer = 00000020 00401200 . 68 E9030000 push 0x3E9 ; |ControlID = 3E9 (1001.) 00401205 . FF35 38AA4000 push dword ptr ds:[<hDlg>] ; |hWnd = 000501AA (class='#32770',parent=000400E6) 0040120B . FF15 A8704000 call dword ptr ds:[<&USER32.GetDlgItemTe>; \GetDlgItemTextA 00401211 . 68 F4010000 push 0x1F4 ; /Timeout = 500. ms 00401216 . FF15 00704000 call dword ptr ds:[<&KERNEL32.Sleep>] ; \Sleep 0040121C . 8D45 E4 lea eax,dword ptr ss:[ebp-0x1C] 0040121F . 50 push eax ; /s = 00000020 ??? 00401220 . E8 DB000000 call <WannaLOL._strlen> ; \_strlen 00401225 . 83F8 04 cmp eax,0x4 00401228 . 59 pop ecx ; <WannaLOL.aCrackme2017Ctf> 00401229 . 0F85 A0000000 jnz WannaLOL.004012CF 0040122F . 6A 30 push 0x30 00401231 . 59 pop ecx ; <WannaLOL.aCrackme2017Ctf> 00401232 . 384D E4 cmp byte ptr ss:[ebp-0x1C],cl ; 第一位 00401235 . 0F84 94000000 je WannaLOL.004012CF 0040123B . 384D E5 cmp byte ptr ss:[ebp-0x1B],cl ; 第二位 0040123E . 0F84 8B000000 je WannaLOL.004012CF 00401244 . 384D E6 cmp byte ptr ss:[ebp-0x1A],cl ; 第三位 00401247 . 0F84 82000000 je WannaLOL.004012CF 0040124D . 384D E7 cmp byte ptr ss:[ebp-0x19],cl ; 第四位 00401250 . 74 7D je short WannaLOL.004012CF ; 四位都不能是0 00401252 . 807D E4 31 cmp byte ptr ss:[ebp-0x1C],0x31 00401256 . 75 77 jnz short WannaLOL.004012CF 00401258 . 807D E5 35 cmp byte ptr ss:[ebp-0x1B],0x35 ; 前两位必须是15 0040125C . 75 71 jnz short WannaLOL.004012CF 0040125E . 74 03 je short WannaLOL.00401263 00401260 . 75 01 jnz short WannaLOL.00401263 00401262 E8 db E8 00401263 . 66:B8 0800 mov ax,0x8 00401267 . 66:35 0700 xor ax,0x7 ; ax定义为f 0040126B . 0FBE45 E6 movsx eax,byte ptr ss:[ebp-0x1A] 0040126F . 2BC1 sub eax,ecx ; 第三位-30 00401271 . 8945 FC mov dword ptr ss:[ebp-0x4],eax 00401274 . 0FBE45 E4 movsx eax,byte ptr ss:[ebp-0x1C] ; 第一位给eax 00401278 . DB45 FC fild dword ptr ss:[ebp-0x4] ; 第三位-30双精度压站 0040127B . 2BC1 sub eax,ecx 0040127D . 8945 FC mov dword ptr ss:[ebp-0x4],eax ; 第一位-30 00401280 . 0FBE45 E5 movsx eax,byte ptr ss:[ebp-0x1B] 00401284 . DB45 FC fild dword ptr ss:[ebp-0x4] ; 第1位-30压站 00401287 . 2BC1 sub eax,ecx ; 第一位-第二位 00401289 . 8945 FC mov dword ptr ss:[ebp-0x4],eax ; 第一位-第二位给变量4 0040128C . DA75 FC fidiv dword ptr ss:[ebp-0x4] ; 第一位-30/第二位-第一位 0040128F . 0FBE45 E7 movsx eax,byte ptr ss:[ebp-0x19] ; 第四位给eax 00401293 . 2BC1 sub eax,ecx 00401295 . 8945 FC mov dword ptr ss:[ebp-0x4],eax 00401298 . DEE9 fsubp st(1),st ; (第三位-30)-0.2 0040129A . DA4D FC fimul dword ptr ss:[ebp-0x4] ; ((第三位-30)-0.2 )*(第四-30位) 0040129D . D80D 1C714000 fmul dword ptr ds:[0x40711C] ; ((第三位-30)-0.2 )*(第四-30位)*16 004012A3 . D95D FC fstp dword ptr ss:[ebp-0x4] ; 结果保存到变量4 004012A6 . 74 03 je short WannaLOL.004012AB 004012A8 . 75 01 jnz short WannaLOL.004012AB 004012AA E8 db E8 004012AB . 66:B8 0800 mov ax,0x8 004012AF . 66:35 0700 xor ax,0x7 004012B3 . D945 FC fld dword ptr ss:[ebp-0x4] ; 结果再次压站 004012B6 . D81D 18714000 fcomp dword ptr ds:[0x407118] ; 和384.000比 004012BC . 6A 00 push 0x0
最后的公式其实就是(i-0.2)*j*16=384
python注册机:
for i in range(1,10): for j in range(1,10): if (i-0.2)*j==24: print i,j
赞赏
他的文章
- [原创]第一题writeup 1890
- [原创]关于徒手脱壳的几种方法 15183
- [原创]说一说python下的赋值,深拷贝与浅拷贝 3305
- [原创]调试时值得重视的API函数 8444
- [原创]IPv4中的A,B,C类网及子网掩码那些事 3648
赞赏
雪币:
留言: