首页
社区
课程
招聘
[原创]第三题 影分身之术
发表于: 2019-3-20 22:16 4224

[原创]第三题 影分身之术

2019-3-20 22:16
4224

(作者:Pizza)
delphi程序内置webbroswer, 通过工具获取网页html代码.

eval执行后得到

当输入以simpower91为开头时, 以剩余部分为参数调用sptWBCallback.

查阅资料得知sptWBCallback用于程序与网页交互.

3.2、让其中的元素执行webbrowser之外的delphi代码
本来,这有很复杂的解决办法,但那部分属于ATL的知识比较难掌握,因此绕了一下:
让那些需要执行delphi的HTML元素,调用一个函数叫做triggerExEvent,参数是HTML元素的名称,然后是若干参数。
triggerExEvent是javascript函数,有不确定个参数,但第一个肯定是表示元素的名称。 triggerExEvent将参数组成字符串,然后前面冠以"#OnTriggerExEvent:",作为url,然后导航。
在webbrowser的onNavigator2事件里,判断url中是否包含"#OnTriggerExEvent:",如果包含怎作如下处理:
a、cancel这次导航;
b、将"#OnTriggerExEvent:"之后的信息截取,作为参数传递给webbrowser的新增一个事件OnTriggerExEvent事件,其参数有两个:1、控件名称;2、一个字符串参数。
这样,用户可以在OnTriggerExEvent事件里处理HTML的点击等事件了
例如,我为webbrowser派生新类,叫做webbrowserEx,它有一个事件叫做OnTriggerExEvent
有个js文件包含这样的函数:
function triggerExEvent(cmpnt_id,event_nm,optionstr)
{
url='#triggerExEvent:id=';
url=url+cmpnt_id+';eventnm='+event_nm;
if(optionstr) url=url+';params=optionstr';
location=url;
}

搜索字符串#sptWBCallback:定位到sub_492088, 程序解析出参数后下访问断点跟踪跟进了虚拟机. 算法大概是

flag:simpower91a123

收藏
免费 1
支持
分享
最新回复 (1)
雪    币: 2415
活跃值: (479)
能力值: ( LV5,RANK:76 )
在线值:
发帖
回帖
粉丝
2
跟踪到了虚拟机,后面的步骤卡住了。。
2019-3-25 15:32
0
游客
登录 | 注册 方可回帖
返回
//