首页 > 其他分享 >23柏鹭杯-misc

23柏鹭杯-misc

时间:2024-06-05 18:44:00浏览次数:22  
标签:function Java 23 misc 柏鹭杯 dict var password com

我记得比赛的时候,misc都是0解。

怎么不算另类的1血呢?

help_me实在不会,arm看不了一点

消失的钥匙

先看验证逻辑,能够看到generateZipPassworddecryptFlag这两个方法内容不见了

截图

通过在apk中寻找半年,找到一个时间不对的classes3.dex,查看hex发现是gz压缩

截图

截图

导出解压一下,拿到了一半的dex

截图

再根据时间线索,找到另一个文件

截图

截图

将两个文件合并,得到完整的dex

截图

getPackageSignature这个方法hook一下,拿到了返回值748124a9239a8f2d79a0de294fbba042

Java.perform(function () {
    Java.choose('com.example.test.MainActivity',{
        onMatch: function(instance){
            console.log(instance.getPackageSignature())
        },
        onComplete: function(){}
    })
})

截图

这里可以确定748124a9239a8f2d79a0de294fbba042是key,com.example.test的MD5取前16位是iv

截图

截图

最后密码是对包名后16位进行aes加密,取16-48位,即231287ee4876a3fed4a34bac962d513e

截图

之后解密

截图

采用fridahook的方式,来直接模拟执行其中的方法

Java.perform(function () {
	Java.choose('com.example.test.MainActivity', {
		onMatch: function (instance) {
			var pwd = '231287ee4876a3fed4a34bac962d513e'
			var zipContent = instance.zipDecrypt(pwd)
			let Flag = Java.use("com.example.test.FlagOuterClass$Flag").$new();
			let flagContent = Flag.parseFrom(zipContent)
			var key = flagContent.getKey()
			var iv = flagContent.getIv()
			var keyString = Java.use('java.lang.String').$new(key) //转成Java中的String,来获得getBytes方法
			var ivString = Java.use('java.lang.String').$new(iv)
			let AESUitls = Java.use('com.example.test.AESUtils').$new(keyString.getBytes(),ivString.getBytes())
			console.log(AESUitls.decrypt(flagContent.getFlag(),true))
		},
		onComplete: function () { }
	})
})

截图

最后的flag为flag{ISEC-C4n_U_f1nd_th3_10st_2Ip_p455Word}

截图

代码吞噬者(寻找病毒进化的密码)

这题好像是当时平台答案不对,导致0解

通过反射加载decode.dex,执行代码

截图

loadKey中再次反射

截图

在patch目录下处理dxdiff,但是该文件不会被保留

截图

截图

考虑到dxdiff已经加载到内存,因此直接dump

截图

拿到了代码

截图

根据对password的判断,拿到了输入的明文

_dict = "9>AG3OCP1N2-4L5K6M7+BQD&EVF=0@8$"
password = '+>M=+K-@MN+-MK-@MN++MK+OM=M&MK'
for i in range(len(_dict)-1,-1,-2):
    c2 = _dict[i]
    c1 = _dict[i-1]
    password = password.replace(c2,c1)
print(bytes.fromhex(password))
# you are awesome

截图


读取了DIFF_HEX,又进行了一次更新

截图

截图

但是在更新之前,将update_1_.dex删除了

截图

因此对delete进行hook,直接阻止删除

Java.perform(function () {
	let File = Java.use("java.io.File");
	File["delete"].implementation = function () {
		return 0
	};
});

截图

本质上就是对解密后的dict和diff进行md5计算

截图

标签:function,Java,23,misc,柏鹭杯,dict,var,password,com
From: https://www.cnblogs.com/WXjzc/p/18233590

相关文章

  • 提供高达 58 Gbps 的收发器速率、AGFA023R31C2E1VB/AGFA023R31C2I1V/AGFA023R31C2I2VB
    Agilex7FPGA产品系列包括业界最高性能的FPGA和SoC。英特尔Agilex7FPGA和SoC由高性能的F系列、I系列和M系列FPGA组成,为要求最高的应用提供了一系列的高级功能。•具有业界最高数据速率的收发器—高达116Gbps•业界首创的PCIExpress*(PCIe*)5.0和ComputeExpressLi......
  • 1123 舍入(测试点2,6,7,8)
    solution注意负号的取舍以及进位只有舍入后非零的负数才会输出负号可能有多位进位,用高精度加法测试点2,6:整数13188.000测试点7:多次进位1339.999910.000测试点8:舍入后全0的负值133-0.00000000010.000#include<iostream>#include<string>usi......
  • javaScript高级23_事件4
    一、概念某些组件被执行了某些操作后,触发某些代码的执行。事件:某些操作。如:单击,双击,键盘按下了,鼠标移动了事件源:组件。如:按钮文本输入框...监听器:代码。注册监听:将事件,事件源,监听器结合在一起。当事件源上发生了某个事件,则触发执行某个监听器代码。二、常见的事件......
  • 算法训练营第10天|理论基础 232.用栈实现队列 225. 用队列实现栈
    理论基础Java中实现栈有以下两种方式:stack类LinkedList实现(继承了Deque接口)(1)Stack实现Stack底层是使用Vector的,而Vector支持线程同步,所以整体性能相对较低,如果没有多线程的场景,不建议使用Stack。(2)LinkedList实现LinkedList实现了List,Deque(实现了Queue接口)的接口,底层是双......
  • 2024.5.23(周四)
    function[s,phis,k,G,E]=golds(phi,a,b,delta,epsilon)%输入:phi是目标函数,a,b是搜索区间的两个端点delta,epsilon分别是自变量和函数值的容许误差9%输出:s,phis分别是近似极小点和极小值,G是nx4矩阵。其第k行分别是a,p,q,b的第k次迭代值[ak,pk,qk,bk],E=[ds,dphi],分别是s和phis的误......
  • 1500PLC通过232自由口转profinet网关接ABB扫码枪通讯方案
    一、现状:在实际的生产环境中,越来越多的自动化设备采用扫码枪录入代替手动录入信息的方式进行操作。二、了解现场现场要求在不动其他设备和程序的情况下让ABB扫码枪与1500PLC通讯,在拿到现场的需求时兴达易控的专项技术为其制定了方案。 三、制定方案:在不动其他设备和程序的......
  • javaScript高级23_BOM2
    一、概念BrowserObjectModel浏览器对象模型将浏览器的各个组成部分封装成对象。 二、组成Window:窗口对象Navigator:浏览器对象Screen:显示器屏幕对象History:历史记录对象Location:地址栏对象  三、Window:窗口对象1、创建2、方法1.与弹出框有关的......
  • javaScript高级23_DOM3
    一、概念DocumentObjectModel文档对象模型将标记语言文档的各个组成部分,封装为对象。可以使用这些对象,对标记语言文档进行CRUD的动态操作  二、W3CDOM标准被分为3个不同的部分1、核心DOM-针对任何结构化文档的标准模型Document:文档对象Element:元素对象......
  • javaScript高级23_DOM1
    一、主要内容概述JavaScript: 1.ECMAScript: 2.BOM: 3.DOM:事件二、DOM简单学习:为了满足案例要求1、功能:控制html文档的内容2、获取页面标签(元素)对象:Elementdocument.getElementById("id值"):通过元素的id获取元素对象3、操作Element对象 1.......
  • NCHU-软件学院-232019班-23201125-罗伊鑫-第二次Blog
    前言本次Blog总结三次题目集的7-1题目的知识点、题量、难度等情况,以及写完后的错误总结和自我思考。1.知识点三次题目集都对于类的设计的提前规划好有着必要的需求,还有就是对于继承与多态的合理的使用。接着就是对于正则表达式的使用的检测,然后就是要有清晰的逻辑编程表达。2.......