-
-
[原创]第三题 影分身之术
-
发表于:
2019-3-20 22:16
4265
-
(作者: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
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)