bugku_easy-200

5 篇文章 0 订阅
2 篇文章 0 订阅

bugku_easy-200

思路分析

直接进行反编译即可
在这里插入图片描述
进入format.form() 如下所示

在这里插入图片描述
截取字符flag{XXX} 很明显是截取XXX

接着分析
在这里插入图片描述
进入到check1.check()

在这里插入图片描述
主要就是看checkPasswd(pass),很明显可以看到native??
猜测应该是调用了java的native层
不熟悉的朋友可以去看一下 Android系统五层架构
一般都是在资源文件下lib目录中的某libxxx.os

直接导出到本地,用ida32打开即可

首先就是找到函数
在这里插入图片描述
明显是第一个

分析源码

在这里插入图片描述
可以看出dest是我们输入的东西,其中的do…while做了一个倒序

进入到sub_95D0说实话,没太看懂。猜测应该是某种赋值,把dest的值传给v19

然后进入encrpyt
在这里插入图片描述
很明显是base64加密,不理解的朋友可以去学一下,base64加密算法的原理
,再去查一下字符串

在这里插入图片描述
字符表也没变换,
最后
在这里插入图片描述进入
sub_A950就是单纯的比较字符串,v10已经知道了,就是倒序后加密的字符串
只需要找到secret即可
交叉引用查看即可

在这里插入图片描述
把最后的点换成=即可
进行base64解密—>倒序即可

整体思路: 输入字符串flag{XXX},然后获取XXX,在调用native的checkPasswd对字符串进行倒序,然后base64加密,在于secrct作比较即可

import base64

bas = "dHR0dGlldmFodG5vZGllc3VhY2VibGxlaHNhdG5hd2k="
ss = base64.b64decode(bas)
print(ss[::-1])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值