【安全技术】金融业网络安全攻防比赛 测试赛题解答

Welcome

题目描述

每次接待重要人物来访,金融技术部的小张都会准备一个欢迎来访的横幅挂在楼前。某日一位安全专家来访,横幅的内容却是一串数字,你能猜透这个横幅的含义吗?

102 108 97 103 123 119 101 108 99 48 109 101 95 50 95 67 84 70 45

119 111 114 108 100 125

解题方法

此题为签到题,对题目中的数字进行ASC II码转换即可得到flag:

flag{welc0me_2_C TF-world}

docx

题目描述

金融系统中的保密要求一向以严格著称。近日,大楼保安抓到了一个疑似通过 U 盘窃取数据的外来者。可是查找 U 盘之后,内部只有一个公开文档信息安全技术金融信息保护规范.docx。被抓到的可疑人员坚称自己没有偷走数据,作为安全专家的你能帮助保安确认到底有没有数据泄漏的可能吗?

解题方法

docx实际上是一种打包了多个文件的容器格式,现有的很多解压缩软件例如WinZip、WinRAR、7zip都能解开它,解开后我们就能看到里面包含了一个名字为 flag{maybe_docx_is_a_structured_file(s)} 的文件。

USB

题目描述

安全评测人员在对某银行卡密码输入系统进行渗透测试的过程中,截获了一段通过USB键盘输入6位数字密码的流量,其中也包含了一些其他无关的USB 设备的流量,你能从中恢复出6位数字密码吗?

*最终提交的flag格式为flag{6位数字密码}。

解题方法

使用Wireshark打开流量,可以看到其中主要有有两种USB通信流量: USB端点1.9.1和host之间的,以及USB端点1.10.1和host之间的。其中,1.9.1 的流量少一些,可以判断为USB键盘;数据多很多的1.10.1可以猜测为USB鼠标数据。因此我们重点来看一下从USB端点1.9.1发送的数据。

通过在Wireshark中设置Filter: usb.src == “1.9.1”,可以看到从键盘往主机依次发送的数据。仔细观察数据之间的变化,我们不难找到键盘发送的扫描码,例如下图中第一个数据包中的键盘扫描码为0x24。

我们将所有的扫描码找出来,依次是:

24 1f 27 27 2a 22 20 2a 26 20 28

网上可以找到键盘扫描码对照表,如下所示:

我们可以还原出最终的键盘按键序列:<7> <2> <0> <0> <5> <3> <9>

<3>。从中不难得出密码为720593,因此最终flag为:flag{720593}

Client

题目描述

如果针对金融机构内部管理客户端做安全测试,客户端登陆需要口令,你能破译嘛?

解题方法

题目附件提供的是一个Windows图形界面程序,很明显需要通过逆向分析来找到程序的用户名和密码,如下图所示:

用IDA打开程序,首先在Strings窗口中能找到一系列关键的字符串。

通过交叉引用可以定位到登陆成功后打印flag的函数sub_401090,继续往上跟,可以找到点击了确认按钮之后,程序用来检查用户名和密码的代码DialogFunc

仔细阅读代码,可以分析出以下逻辑: 用户名必须为explorer 密码长度为30位密码由”welcome_to_th“和”e_world_of_binary“拼接而成。然后使用分析得到的账号登陆,即可看到flag如下:

2048

题目描述

你一定玩过2048这个游戏吧!二二得四,四四得八,八八得十六 让人

想到复利的力量,你能通关吗?

解题方法

题目的附件给了一个安卓应用的APK文件,安装运行后界面如下:

很明显是一个游戏题,2048是一个比较有名的小游戏,玩法是相同数字方块相加,最终得到和为2048即可过关。把apk拖进jeb等工具中,发现该应用为纯Java应用,代码量不多也不少。通常来说,字符串是个很好的入口:

可以注意到由一个比较关键的 “You Win!” 的字符串,进一步去找一下对you_win的引用:

跟进去第一个引用的函数:

分析发现如果第二个参数z为true就触发了绘制you_win字符串(其实上图中有一个Base64编码的字符串,进行解码会得到的字符串就是flag,因为该字

符串首先被编码了,然后根据逻辑也能大概猜出是和you_win字符串相关的, 有很大的几率是flag,猜测是快速解题的一种方式。

查找对createEndGameStates函数的引用:

找到满足要求的函数createOverlays

注意这里:

this.winGameContinueOverlay = new BitmapDrawable(resources, createBitmap); 查看对winGameContinueOverlay的引用:

分析到这里,发现是在这个函数内绘制的,触发条件是

this.game.gameWon()

 

到这里可以直接修改smali返回true,或者hook返回值。

重打包,签名,安装,运行:

完整下载:https://t.zsxq.com/ZR7e2R7

发表评论

电子邮件地址不会被公开。 必填项已用*标注