-
-
[原创]【2019看雪CTF】Q1赛季 第三题影分身之术 WP
-
发表于:
2019-3-23 13:07
5931
-
[原创]【2019看雪CTF】Q1赛季 第三题影分身之术 WP
本题是delphi写的程序。试运行了下,发现有些似曾相识的感觉。后想起去年也出了个有很多地方类似的题,看了下作者是同一人,想来是去年的增强版。
这次题目分两部分,一部分还是web页面及js代码,第二部分是编码后的代码逐步解码并执行,应该算是一种VM吧。
第一部分页面代码及脚本代码如下(部分是解后的代码):
从上面的脚本代码能看出,输入的前10字节为simpower91
,后面的输入通过#sptWBCallback:id=xxxxx;eventName=xxxxx;params=optionstr
这种形式的“url”参数id传回应用。
在0x492088
处的函数解析url参数,然后调用493F70
处函数。
493F70
函数先检查了传入的输入长度是否为4:
然后检查data.txt
是否存在(这个应该是测试时带的功能),如果存在就读取内容作为VM代码解析执行;不存在就读取文件结尾的VM代码解析执行。
VM代码解析执行前先解码,解码比较简单,就是按字节取反或与0xff
异或。4734B0
应该是VM相关处理的入口。VM代码分为两种,一种是需要handler处理的,一种是直接的机器码,示例如下:
VM的解析并写机器码在472EAC
中实现,中间竟然还出现了相应汇编字串。
这个VM当时没完全看明白,但是校验算法可以看出来是传入参数按字节加0x7f后与常量比较,可在4734F1
处下断跟踪。得到后4字节为a123
。
最终flag为simpower91a123
。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课