首页
社区
课程
招聘
看雪CTF2019Q1-第3题
发表于: 2019-3-18 22:05 5592

看雪CTF2019Q1-第3题

2019-3-18 22:05
5592
这题在以前的基础上做了点修改

1. 绑定了一个IE控件回调
about:blank#sptWBCallback:id=123456;eventName=undefined

CODE:00491DCC sub_491DCC      proc near               ; CODE XREF: _Tfrmcrackme_FormCreate+81↓p
CODE:00491DCC                 push    ebx
CODE:00491DCD                 mov     ebx, eax
CODE:00491DCF                 mov     eax, ebx
CODE:00491DD1                 call    sub_491B78
CODE:00491DD6                 mov     eax, [ebx+40h]
CODE:00491DD9                 mov     [eax+2A4h], ebx
CODE:00491DDF                 mov     dword ptr [eax+2A0h], offset x_CB_492088
CODE:00491DE9                 pop     ebx
CODE:00491DEA                 retn
CODE:00491DEA sub_491DCC      endp

function sptWBCallback(spt_wb_id, spt_wb_name, optionstr) {
    url = '#sptWBCallback:id=';
    url = url + spt_wb_id + ';eventName=' + spt_wb_name;
    if (optionstr) url = url + ';params=optionstr';
    location = url;
}

回调中提取id, eventName, params, 这里只对id有处理

CODE:00491DCC sub_491DCC      proc near               ; CODE XREF: _Tfrmcrackme_FormCreate+81↓p
CODE:00491DCC                 push    ebx
CODE:00491DCD                 mov     ebx, eax
CODE:00491DCF                 mov     eax, ebx
CODE:00491DD1                 call    sub_491B78
CODE:00491DD6                 mov     eax, [ebx+40h]
CODE:00491DD9                 mov     [eax+2A4h], ebx
CODE:00491DDF                 mov     dword ptr [eax+2A0h], offset x_CB_492088
CODE:00491DE9                 pop     ebx
CODE:00491DEA                 retn
CODE:00491DEA sub_491DCC      endp

function sptWBCallback(spt_wb_id, spt_wb_name, optionstr) {
    url = '#sptWBCallback:id=';
    url = url + spt_wb_id + ';eventName=' + spt_wb_name;
    if (optionstr) url = url + ';params=optionstr';
    location = url;
}

回调中提取id, eventName, params, 这里只对id有处理

2. 在jscript.dll的JsEval内的COleScript::Compile处下断, 得到eval后的js, 得到前半部分: simpower91
function ckpswd() {
    key = "simpower91";
    a = document.all.pswd.value;
    if (a.indexOf(key) == 0) {
        l = a.length;
        i = key.length;
        sptWBCallback(a.substring(i, l));
    } else {
        alert("wrong!<" + a + "> is not my GUID ;-)");
        return "1234";
    }
}

function ok() {
    alert("congratulations!");
}

function onclick() {
    ckpswd();
}

function ckpswd() {
    key = "simpower91";
    a = document.all.pswd.value;
    if (a.indexOf(key) == 0) {
        l = a.length;
        i = key.length;
        sptWBCallback(a.substring(i, l));
    } else {
        alert("wrong!<" + a + "> is not my GUID ;-)");
        return "1234";
    }
}

function ok() {
    alert("congratulations!");
}

function onclick() {
    ckpswd();
}

3. 后半部分( 跟踪前面的回调函数)
这部分通过虚拟机对id进行验证


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

收藏
免费 1
支持
分享
最新回复 (1)
雪    币: 2428
活跃值: (159)
能力值: ( LV11,RANK:198 )
在线值:
发帖
回帖
粉丝
2
上次大神留下的印象极为深刻,我会再来的,期待下次
2019-3-27 09:31
0
游客
登录 | 注册 方可回帖
返回
//