首页
社区
课程
招聘
[原创] KCTF 2019 Q1 第三题 以数据为中心
发表于: 2019-3-23 22:57 9753

[原创] KCTF 2019 Q1 第三题 以数据为中心

HHHso 活跃值
22
2019-3-23 22:57
9753

0x01
Script 提示,直接搜内存 "is not my GUID",得到如下内容,
可见simpower91为key的前半部分
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 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 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;
}

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;
}


0x02 通过下述敏感字符信息,可以直接定位到location=url最终响应的函数位置 Hi_callback_sub_492088




其中将提取param,eventName,id信息作为参数传递给 函数 493f70
而其中id就是我们key的剩余部分


0x03 在493f70函数中,其通过加载data.txt或直接从自身提取0x3D8长度的内容 ,解密得到虚拟执行代码


在众多代码中,我们关注一个内存拷贝函数,其将edx地址处ECX大小的字节复制到eax地址处


0x04 我们主要在下述两个地方下断点
(1) 47300F处,这个地方主要用来复制编译后的指令
(2) 47326D处,此处已经完成(1)中指令迁移和初始化动作,也可以看到编译的是什么指令

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (2)
雪    币: 2428
活跃值: (159)
能力值: ( LV11,RANK:198 )
在线值:
发帖
回帖
粉丝
2
ida的结构看的真清晰
2019-3-27 09:41
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
大佬讲的好清晰
2021-6-15 17:30
0
游客
登录 | 注册 方可回帖
返回
//