-
-
[原创] KCTF 2019 Q1 第三题 以数据为中心
-
发表于:
2019-3-23 22:57
9994
-
[原创] KCTF 2019 Q1 第三题 以数据为中心
0x01
Script 提示,直接搜内存 "is not my GUID",得到如下内容,
可见simpower91为key的前半部分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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!" );
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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!" );
}
|
1 2 3 | 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;
}
|
1 2 3 | 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)中指令迁移和初始化动作,也可以看到编译的是什么指令
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课