首页 > 其他分享 >【NSSCTF逆向】【2023题目】《stream》《a_cup_of_tea》

【NSSCTF逆向】【2023题目】《stream》《a_cup_of_tea》

时间:2023-07-10 21:46:55浏览次数:48  
标签:exe 题目 stream cup tea key 加密

总览

stream RC4 base64 exe解包 pyc反编译
a_cup_of_tea tea

题目 stream

解法

拿到题目是一个exe,先用exeinfo打开看看

可以看到这个程序使用python写的,又是exe。
所以就是常规的思路,exe解包到pyc文件,再对pyc文件进行反编译
先是解包 用pyinstxtractor.py

里面找到它
再来反编译他
原本想用uncompyle6的,但是可能是因为用的是高版本,支持不到。
所以用的是pycdc
用powershell打开

可以看到py源代码了
分析一下这个程序

流程就是输入一个text,然后程序里面有个key,先将这个key进行rc4加密,然后用加密后的key和text逐位进行一个处理,在进行base64的加密。
由此逆向思路就是先把密文给base64解密,再将这个加密后的key与解密后的密文进行逐位处理(主要是异或,所以可以直接逆)。出来的就是flag。


得到flag。

总结

经验

  1. pycdc的用法
  2. pyinstxtractor的用法
  3. rc4直接逆
  4. decode 将字符解码(应该是需要配合base64加解密使用)

题目 a_cup_of_tea

解法

这道题目拿到手是一个exe,拿exeinfo看看

无壳64位 ida看看
进入主函数
可以看到框框里面的东西一个就是关键的加密函数了(print,input已经重命名)点开来看看

点开来看看,确实是一个tea的加密算法。
结合以前学过的知识,这个tea需要相反过来。那就比较好些。
但是碰到了什么问题估计,这里的v3,v2,v4命名可能有点问题

看了别人的wp,知道了这里其实是0x12345...,这样的形式。
比较不解的是传入的这个参数取【1】后为啥是这样的。。
还是解题先,有了key,有了buf2的密文,解密就比较容易了,直接写
(还在想为啥是0x12345678,就直接贴wp了)

总结

  1. tea基本算法

标签:exe,题目,stream,cup,tea,key,加密
From: https://www.cnblogs.com/Corax0o0/p/17542401.html

相关文章

  • 聊一聊Java中的Steam流
    1引言在我们的日常编程任务中,对于集合的制造和处理是必不可少的。当我们需要对于集合进行分组或查找的操作时,需要用迭代器对于集合进行操作,而当我们需要处理的数据量很大的时候,为了提高性能,就需要使用到并行处理,这样的处理方式是很复杂的。流可以帮助开发者节约宝贵的时间,让以上......
  • 配置steam input遇到的坑,调用steam input API 之前的准备工作
    配置steaminput遇到的坑,调用steaminputAPI之前的准备工作 总共需要3种类型的文件1.steam_appid.txt这个文件里面就只有一个id,对应着你正在调试的app,这个文件必须放在你生成的game.exe旁边比如在vc的Debug文件夹中,或者工程的根目录下.缺这个文件SteamAPI_Init无法调......
  • XXI Opencup, Grand Prix of Korea
    目录XXIOpencup,GrandPrixofKoreaADHKJFIEGXXIOpencup,GrandPrixofKoreaOpenCup强度这么大吗(A根据Hall定理,把\(a\)从大到小排序对于\(\forallx\in[1,n]\)如果有\(\sum_{i=1}^xa_i\leq\sum_{i=1}^m\min\{x,b_i\}\)则等价于可以分发完全。......
  • 关于Stream流的一些常用方法
    前言在这里先说明一下,这个重在应用,本文就不对概念跟描述做过多赘述。应用1)提取对象数组中的某一个字段(带去重)List<String>orderIdList=orderList.stream().map(e->e.getOrderId()).distinct().collect(Collectors.toList());//收集全部orderIdSetthirdCategoryI......
  • SteamAPI_Init 返回失败的原因
    SteamAPI_Init您在自己的项目内设置SteamworksAPI后,就可以通过调用 SteamAPI_Init 函数,初始化此API并开始使用。这样即可设置全局状态,并填入可以通过与此接口名称匹配的全局函数访问的接口指针。 必须调用此函数并返回成功,才能访问任何 Steamworks接口!如果Steamworks......
  • Spark 以及 spark streaming 核心原理及实践 - (2)
    SparkStreaming运行原理spark程序是使用一个spark应用实例一次性对一批历史数据进行处理,sparkstreaming是将持续不断输入的数据流转换成多个batch分片,使用一批spark应用实例进行处理。从原理上看,把传统的spark批处理程序变成streaming程序,spark需要构建什么?需要构建4个东西:一个静......
  • 清理Teamcenter的审计日志
    清理日志的方法修改日志保留的天数:Fnd0RetentionPeriodThisconstantisplacedontheFnd0AuditLogbusinessobjectanditschildren.ThedefaultvalueisNULL.TypeavalueintheValueboxtochangeitsvalue. 批处理样例:ECHOONsettc_root=D:\Siemens\Teamc......
  • 从头学Java17-Stream API(二)结合Record、Optional
    StreamAPIStreamAPI是按照map/filter/reduce方法处理内存中数据的最佳工具。本系列教程由Record讲起,然后结合Optional,讨论collector的设计。使用Record对不可变数据进行建模Java语言为您提供了几种创建不可变类的方法。可能最直接的是创建一个包含final字段的final类。......
  • IOI 2015 Teams 分组
    IOI2015Teams分组题意班里有\(N\)个学生,他们的编号为从\(0\)到\(N-1\)。每天,老师都有一些项目需要学生去完成。每个项目都需要由一组学生在一天内完成。项目的难度可能不同。对于每个项目,老师知道应该选择由多少学生组成的小组去完成。不同的学生对小组的规模有不同的......
  • Kubernetes使用Helm部署Gitea仓库
    使用Helm部署Gitea仓库配置Helm源helmrepoaddgiteahttps://dl.gitea.io/chartshelmrepoupdate导出Gitea配置文件values.yamlhelmshowvaluesgitea/gitea>values.yaml#helmshowreadmegitea/gitea>README.md修改values.yamlvimvalues.yaml修改持久化配置......