饶派杯XCTF车联网安全挑战赛Reverse GotYourKey

这篇具有很好参考价值的文章主要介绍了饶派杯XCTF车联网安全挑战赛Reverse GotYourKey。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.程序逻辑分析

onCreate方法中判断SDK版本是否>=27
饶派杯XCTF车联网安全挑战赛Reverse GotYourKey
然后创建两个线程
第一个线程是接受输入的字符串并发送出去
第二个线程用于接受数据
饶派杯XCTF车联网安全挑战赛Reverse GotYourKey
线程1,就是将字符串转为字节数组发送出去
饶派杯XCTF车联网安全挑战赛Reverse GotYourKey
线程2,作为服务端接受数据并进行处理
饶派杯XCTF车联网安全挑战赛Reverse GotYourKey

二.线程2的operate方法解析

这部分主要是用于混淆的代码,很多没有实际作用
饶派杯XCTF车联网安全挑战赛Reverse GotYourKey
有一个方法是根据buffer来截取后一段数据,照着程序逻辑分析可以得出buffer分三段,一段是下标0~3,中间一段是topic(stringData),最后一段是messageData
不过这里都不是很重要可以直接忽略
饶派杯XCTF车联网安全挑战赛Reverse GotYourKey
主要在于check方法,跟进可以发现是aes加密
饶派杯XCTF车联网安全挑战赛Reverse GotYourKey
不过要注意这里的base64换了表,并且填充符不是’=‘而是’^’
饶派杯XCTF车联网安全挑战赛Reverse GotYourKey
解密:

  1. base64解密
import base64
str1 = "UGCA3QBFjPnlAZ6-NbV2Ca=="#将^替换为==即可
string1 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-+"#换表
string2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
bytes=base64.b64decode(str1.translate(str.maketrans(string1,string2)))
value=int.from_bytes(bytes,byteorder='big')
print(hex(value))
#得到base64解密后的16进制数据0xe2a9a477496927334b93d83ec41e5c98
  1. aes解密

饶派杯XCTF车联网安全挑战赛Reverse GotYourKey
不过很不幸这里是假的flag

三.找出真flag

可以发现apk文件的assets目录下有一个bin文件,但是不知道具体内容是什么
饶派杯XCTF车联网安全挑战赛Reverse GotYourKey
MainActivity这里也导入了一个库,那么很有可能是这里做了些手脚
饶派杯XCTF车联网安全挑战赛Reverse GotYourKey

stringFromJni是默认的,没有什么特殊操作
饶派杯XCTF车联网安全挑战赛Reverse GotYourKey
JNI_Load里面有不少函数调用,笨方法逐个查看
饶派杯XCTF车联网安全挑战赛Reverse GotYourKey
这个sub_21868就是关键函数了,跟进之后也可以找到打开asset.bin文件的操作(这里如果用字符串查找会更快)
饶派杯XCTF车联网安全挑战赛Reverse GotYourKey
再往下看可以看到"goodluck"字符串,这可能是加密密钥,跟进之后可以发现是一个rc4加密
到这里可以大概看出是将asset.bin文件打开后进行rc4解密
解密asset.bin文件:

def rc4(data, key):
    S = list(range(256))
    j = 0
    out = []
    # KSA
    for i in range(256):
        j = (j + S[i] + key[i % len(key)]) % 256
        S[i], S[j] = S[j], S[i]
    # PRGA
    i = j = 0
    for char in data:
        i = (i + 1) % 256
        j = (j + S[i]) % 256
        S[i], S[j] = S[j], S[i]
        out.append(char ^ S[(S[i] + S[j]) % 256])
    return bytes(out)
# Read the encrypted file
with open('asset.bin', 'rb') as f:
    encrypted_data = f.read()
# Decrypt the data
decrypted_data = rc4(encrypted_data, b'goodluck')
# Write the decrypted data to a new file
with open('decrypted_file', 'wb') as f:
    f.write(decrypted_data)

解密后的文件可以看到dex的标识
饶派杯XCTF车联网安全挑战赛Reverse GotYourKey
将解密后的dex文件用jadx打开,可以发现大部分逻辑还是和之前的结果一样,最主要的差别就是check函数不同,这里是rc4加密和rc4最后调用的base64加密
饶派杯XCTF车联网安全挑战赛Reverse GotYourKey
解密:

  1. base64解密
import base64
str1 = "SSro3CogRALMhCnQRBDyWa=="

string1 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-+"
string2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
bytes=base64.b64decode(str1.translate(str.maketrans(string1,string2)))
value=int.from_bytes(bytes,byteorder='big')
print(hex(value))
#0xdb644e766386d64bf01e6374d659d8e8

2.rc4解密
饶派杯XCTF车联网安全挑战赛Reverse GotYourKey
输出结果有乱码,将输出结果设置为16进制,然后用16进制转字符串网站即可
饶派杯XCTF车联网安全挑战赛Reverse GotYourKey
根据题目提示最终flag是md5(flag{ikjnmkjh±$})文章来源地址https://www.toymoban.com/news/detail-499474.html

到了这里,关于饶派杯XCTF车联网安全挑战赛Reverse GotYourKey的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023 数据安全产业人才能力挑战赛 --- math_exam wp

    题目 过程分析 本题考点主要是关于RSA的基础数论分析,通过各种等式变换得到关于 p 和 q 的等式,从而计算出 p 和 q 。 challenge 1 l e a k ≡ ( n + p )   m o d   ( q − 1 ) leak equiv (n+p) space mod space (q-1) l e ak ≡ ( n + p )   m o d   ( q − 1 ) ∵ n = p ∗ q because n=p*q ∵ n = p ∗ q ∴ l e a

    2024年02月02日
    浏览(43)
  • 【2023 年第十三届 MathorCup 高校数学建模挑战赛】D 题 航空安全风险分析和飞行技术评估问题 27页论文及代码

    (1)建模思路 【2023 年第十三届 MathorCup 高校数学建模挑战赛】A 题 量子计算机在信用评分卡组合优化中的应用 详细建模过程解析及代码实现 【2023 年第十三届 MathorCup 高校数学建模挑战赛】 B 题 城市轨道交通列车时刻表优化问题 详细建模方案及代码实现 【2023 年第十三届

    2024年02月08日
    浏览(41)
  • 2023年MathorCup高校数学建模挑战赛大数据挑战赛赛题浅析

    比赛时长为期7天的妈杯大数据挑战赛如期开赛,为了帮助大家更好的选题,首先给大家带来赛题浅析,为了方便大家更好的选题。 赛道 A:基于计算机视觉的坑洼道路检测和识别 A题,图像处理类题目。这种题目的难度数模独一档,有图像处理经验的可以尝试。正常并不推荐

    2024年02月08日
    浏览(33)
  • CSDN编程挑战赛经历

    CSDN竞赛为鼓励各位开发者积极参与开发相关的技能评测,帮助开发者在练习与学习的过程中取长补短,提升个人专项能力。 本大赛面向所有开发同学,报名参与即可来挑战,并有CSDN周边精美礼品及荣誉激励。 主要题型为编程题,当然有时候还有其他题型,编程题可以用C语

    2024年02月12日
    浏览(27)
  • IAM风险CTF挑战赛

    wiz启动了一个名为“The Big IAM Challenge”云安全CTF挑战赛。旨在让白帽子识别和利用 IAM错误配置,并从现实场景中学习,从而更好的认识和了解IAM相关的风险。比赛包括6个场景,每个场景都专注于各种AWS服务中常见的IAM配置错误。 Challenge1: Buckets of Fun We all know that public bucket

    2024年02月11日
    浏览(28)
  • 中文连续视觉语音识别挑战赛

    视觉语音识别,也称唇语识别,是一项通过口唇动作来推断发音内容的技术。该技术在公共安全、助老助残、视频验真等领域具有重要应用。当前,唇语识别的研究方兴未艾,虽然在独立词、短语等识别上取得了长足进展,但在大词表连续识别方面仍面临巨大挑战。特别是对

    2024年02月06日
    浏览(30)
  • 科大讯飞-鸟类分类挑战赛-测试【1】

    背景: 随着生态环境的不断变化和人类对自然资源的过度开发,世界各地的鸟类数量和种类正在发生着巨大的变化。为了更好地保护鸟类资源,科学家们需要对鸟类进行详细的研究和记录。然而,传统的鸟类观察方法往往需要大量的人力、时间和物力,而且在观察过程中还可

    2024年02月14日
    浏览(26)
  • 智能算法挑战赛决赛题目——初中组

    从 m 个字符中选取字符,生成 n 个符号的序列,使得其中没有 2 个相邻的子序列相同。如从 1,2,3,生成长度为 5 的序列,序列“12321”是合格的,而“12323”和“12123”是不合格。问:已知 m 和 n 都是小于等于 10 的数字,求 m 个不同字符,组成长度n 的序列中,无 2 个相邻相

    2024年02月11日
    浏览(34)
  • 通义千问AI挑战赛赛后反思

    个人理解: 初赛阶段主要聚焦在如何通过 SFT 提升基础模型的代码能力,需要选手基于最新开源的 Qwen 1.8 模型作为基础模型,上分的关键主要通过收集高质量的代码数据提升模型的在Python, JavaScript, Java, Go, C++, Rust六种编程语言的代码生成能力。 比赛要求采用通义千文模型,

    2024年01月21日
    浏览(32)
  • 春秋云镜-内网极限挑战赛-Exchange

    看到奖品还有证书,还涉及oscp方面的东西,过来打打 感谢TryHackMe Exchange 是一套难度为中等的靶场环境,完成该挑战可以帮助玩家了解内网渗透中的代理转发、内网扫描、信息收集、特权提升以及横向移动技术方法,加强对域环境核心认证机制的理解,以及掌握域环境渗透中

    2023年04月19日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包