CTFShow的RE题(四)

真的是签到

在这里插入图片描述
给的是无后缀的 zip 文件,解压发现需要密码,也没有提示,猜测可能是 zip 伪加密 (走错厂了吧)
zip是否加密
首先就是看开头的6 ,7byte,和中间 01 02 后的 5 ,6byte
成功解压缩,继续做
信息
发现是 Aspack 壳,只能手动脱壳了。
就是使用 ESP 定理,就是最后在哪 dump 后面还需要再学学
在这里插入图片描述
这个说是在 push 后的 retn 执行后 dump
在这里插入图片描述

这是因为前面的壳压缩或加密导致odbg没有及时的去分析,此时我们需要右键分析选择分析代码
在这里插入图片描述
然后在这脱壳
ida打开好像还是不对,继续查看
在这里插入图片描述
可能还有一个魔改 UPX壳!
在这里插入图片描述
不会 upx 夹杂 aspack 吧 0——0,先试试
下面深红区应该还有一个 vmp 没找到,估计也只能手动再脱了
再 ESP 定律脱一下,再 push , jmp 大跳转后 dump
得到源程序
在这里插入图片描述

a = [0x6c,0x2f,0x30,0x31,0x32,0x33,0xb6,0xbf,0xa0,0xcf,0x7c,0x71,0x6a,0x6c,0x70,0x64,0x75,0x63][::-1]
print(bytes([i^v for i,v in enumerate(a)]).decode('gb2312'))
#ctfshow{签到?????}

或者

#include <stdio.h>
int main()
{int res[18] = { 0x6c,0x2f,0x30,0x31,0x32,0x33,0xffffffb6,0xffffffbf,0xffffffa0,0xffffffcf,0x7c,0x71,0x6a,0x6c,0x70,0x64,0x75,0x63 };for (int i = 17; i >= 0; i--){res[i] = res[i] ^ (17 - i);printf("%c", res[i]);}printf("\n");return 0;
}

总结:zip伪加密,upx,aspack脱壳,还有就是中文字符打印即注意字符串比较顺序

批量生产的伪劣产品

一个 apk 文件
在这里插入图片描述
点击没有回显,仍 jadx 分析一下
太多包了,找不到 MainActivity ,搜索 flag 也没有什么信息
嗯,想不到了
在这里插入图片描述
往里面翻翻
在这里插入图片描述
感觉有点草率

总结

android题,找不到 MainActivity 可以先去 xml 文件看看,有入口点,是否可调试啊之类的,一些 Android 基础知识还是要去学学

来一个派森

python 打包的 exe 文件,解包得到 py 文件

def b58encode(tmp: str) -> str:tmp = list(map(ord, tmp))temp = tmp[0]base58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"for i in range(len(tmp) - 1):temp = temp * 256 + tmp[i + 1]tmp = []while 1:tmp.insert(0, temp % 58)temp = temp // 58if temp == 0:breaktemp = ""for i in tmp:temp += base58[i]tmp = []for i in range(len(temp)):tmp.append(chr(ord(temp[i]) ^ i))check = ['A', '5', 'q', 'O', 'g', 'q', 'd', '\x7f', '[', '\x7f', 's', '{', 'G', 'A', 'x', '`', 'D', '@', 'K', 'c', '-', 'c', ' ', 'G', '+', '+', '|', 'x', '}', 'J', 'h', '\\', 'l']if tmp == check:return 1else:return 0flag = input("输入flag:")
if b58encode(flag):print("you win")
else:print("try again")

base58 解了一下发现不对
唉,没注意到,前面 base58 后,还有一个异或
先异或回去,再解 base 58

学习

temp = tmp[0]
for i in range(len(tmp) - 1):
temp = temp * 256 + tmp[i + 1]

将 ASCII 码值列表 tmp 转换为一个大整数 temp,这种操作通常用于将字符串转换为一个数值以便进行进一步的数学运算或加密操作

tmp.insert(0, temp % 58)

tmp 是一个列表,将 temp%58 插入 tmp 的开头
是因为 Base58 编码是从右到左进行的,所以每次得到的余数都应该从列表的开头插入,以便最终生成正确的 Base58 编码字符串

好好学习 天天向上

在这里插入图片描述
看上去简单,但真不太好逆
在这里插入图片描述
应该是要用到爆破吧
v4,v2是关键,但真不知道怎么建立联系
所以每一次累加没有规律,只能爆破
找到一个 pwntools 脚本

from pwn import *
tab = 'abdefglostuyp{}_'
aa = open("D:\ctf附件2\cStuday.exe", 'rb').read()[0x2400: 0x13400]
def deeptry(i, v4, s):if v4 < 0:return Falseif i == 0:# print(i,hex(v4),s)if v4 == 0:print('-->' + s)return Falsefor j in range(16):v2 = 17 * (j + 16 * i)p = 8 * (tab.index(s[0]) + v2)# print(hex(p))tmp = v4 - u64(aa[p:p + 8])deeptry(i - 1, tmp, tab[j] + s)
s = '}'
deeptry(31, 0x1C836D8E5C11047F, s)

但是确实数有点多,跑出来应该也要半天
翻翻wp,都是猜出来的
在这里插入图片描述
就难评

不过也再次说明逆向确实很需要猜 0_0

屏幕裂开了

你的手机屏幕能承受住那么多次点击吗?
在这里插入图片描述
所以 flag 肯定藏在哪里,找到点击那个函数,修改一下判断条件再调试,这应该是最优解,或者直接找到 flag
在这里插入图片描述
jeb试试
在这里插入图片描述
表示 v4<v5,就跳转到 BE 标签
可以修改 v4,v5 顺序,也可以改成指令 if-le
然后忘记怎么修改 jeb 指令了,0_0
在这里插入图片描述

鼠标点击要下断点的行:ctrl+b 打断点鼠标点击要下断点的行:control+b 打断点

不知道为什么 NP 里的 MainActivity 里面没有那个判断
在这里插入图片描述
网上看了一下,wp都是直接逆的算法
怎么都不想偷懒吗?唉,都这么勤快
在这里插入图片描述
在这里插入图片描述
应该就是 RC4,但解出来不对
在这里插入图片描述
所以最后异或那部分要重复 99999 次,不对不是异或那,是S盒打乱那
贴个学习大佬的脚本

s = [i for i in range(256)]
k = (b"InfinityLoop"*22) [0:256]for hit_count in range(99999):j = 0for i in range(256):j = (s[i]+j+k[i])%256s[i],s[j] = s[j],s[i]answer = [0xA6,0x3D,0x54,0x0B0,0x74,0xCC,0xBD,0x2A,0x4A,0x0DE,0x0BD,0x35,0x0D1,0x1D,0x80,0x32,0x5F,0x64,0x2F,0x0C5,0x0DD,0x11,0x3E,0x95,0x0CC,0x17,0x13,0x0E5,0x5E,0x65,0x0CE,0x42,0x9E,0x47,0x0C8,0x0F3,0x4D,0x8A,0x0A6,0x1F,0x0F0,0x50,0x27,0x0A2,0x28,0x81,0x24,0x0A7,0x0B4,0x90,0x0FC,0x93,0x8A,0x0C1,0x77,0x0D5,0x16,0x1E,0x0FD,0x87,0x0C7,0x0BB,0x0B3,0x0]v10,v11 = 0,0
v14 = s 
tab = [0]*63
for j in range(63):v11 = v11+1v10 = (v14[v11] + v10)& 0xffv14[v11],v14[v10] = v14[v10],v14[v11]tab[j] = v14[(v14[v10]+ v14[v11]) %256]flag = [answer[i]^tab[i] for i in range(63)]
print(bytes(flag))
#flag{i_hope_you_didnt_click_the_button_99999__justRE_in_Static}
i=0
j=0
key='InfinityLoop'
flag='\xa6\x3d\x54\xb0\x74\xcc\xbd\x2a\x4a\xde\xbd\x35\xd1\x1d\x80\x32\x5f\x64\x2f\xc5\xdd\x11\x3e\x95\xcc\x17\x13\xe5\x5e\x65\xce\x42\x9e\x47\xc8\xf3\x4d\x8a\xa6\x1f\xf0\x50\x27\xa2\x28\x81\x24\xa7\xb4\x90\xfc\x93\x8a\xc1\x77\xd5\x16\x1e\xfd\x87\xc7\xbb\xb3'
s=[]
k=[]
for i in range(256):s.append(i)k.append(0)for i in range(256):k[i]=ord(key[i%len(key)])for t in range(99999):j=0for i in range(256):j=(j+s[i]+k[i])%256tmp=s[i]s[i]=s[j]s[j]=tmpfor a in range(16):for b in range(16):print('%.2x '%s[16*a+b],end='')print()
i=0
j=0for k in range(len(flag)):i=(i+1)%256j=(j+s[i])%256tmp=s[i]s[i]=s[j]s[j]=tmpt=(s[i]+s[j])%256print(chr(ord(flag[k])^s[t]),end='')

这是我能写的 0_0

for a in range(16):
for b in range(16):
print(‘%.2x ’ % s[16*a + b], end=’')
print()

%.2x 是一个格式化字符串,表示输出一个十六进制数,且占两位,不足两位时在前面补0

二进制玩家人均全栈

又是一个 zip 伪加密,这次有两个 50 4B 01 02
在这里插入图片描述
第一个没有问题,改第二个
在这里插入图片描述
不知道是个什么,丢 010 看看
在这里插入图片描述
多了一个 7F ,删掉试试
在这里插入图片描述
好像不是 exe ,ida 打开也不是
在这里插入图片描述
发现和 elf 文件头也很像,试试
在这里插入图片描述
对了,但应该有个壳,没查出来
在这里插入图片描述
下一个 die 查一下,说是两个互补用
在这里插入图片描述
查到了,但还是待去 010 看看
在这里插入图片描述
都改一下吧
exe 只有三个
在这里插入图片描述
不知道有些师傅都怎么改的
第一处是特征值 : UPX!
在这里插入图片描述
只能先留这了,之后遇到再看看
先手动脱一下

ida来dump得到elf文件
调半天,卡在这了
在这里插入图片描述
好烦 0_0
找找资料,学学先。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/42878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Proxifier代理的其他妙用方法(内网渗透、反溯源、小程序公众号)

目录 配置说明 1. 通过Proxifier进行内网渗透 2. 通过Proxifier将VM虚拟机代理 3. 通过Proxifier进行小程序抓包 4. 补充 文章截取处 配置说明 配置其他的之前,要新增一个代理规则,如下: 127.0.0.1; ::1 让它 Direct (直接连接,即不走任何代理)即可 说明: ::1是I…

LabVIEW透视变换

透视变换概述源程序在www.bjcyck.com下载 透视变换是一种几何变换&#xff0c;用于对图像进行扭曲&#xff0c;使其看起来从不同角度拍摄。这在计算机视觉和图像处理领域非常重要&#xff0c;例如在投影校正和图像配准中。LabVIEW提供了强大的图像处理工具&#xff0c;利用其V…

南方CASS:地理信息系统的卓越之选

引言 作为一名长期从事地理信息系统&#xff08;GIS&#xff09;工作的专业人士&#xff0c;我对各类地理信息处理软件有着深入的了解和使用经验。其中&#xff0c;南方CASS&#xff08;南方测绘计算机辅助设计系统&#xff09;无疑是我最为推崇的一款软件。它不仅功能强大&am…

无人机群辅助边缘计算系统的任务卸载和资源分配联合优化

源自&#xff1a;系统工程与电子技术 作者&#xff1a;刘世豪 黄仰超 胡航 司江勃 韩蕙竹 安琪 注&#xff1a;若出现无法显示完全的情况&#xff0c;可 V 搜索“人工智能技术与咨询”查看完整文章 摘 要 为提升无人机群辅助边缘计算系统在负载不均衡场景下的性能, 构…

maxwell启动报错:Could not find first log file name in binary log index file

出现该问题是因为&#xff1a;maxwell 读取的是 mysql 的 binlog 日志&#xff0c;而配置文件中的两个值与 binlog 的最新值没有保持一致导致 1. 切换到maxwell的库 show master status;记住图片中的 FIle 和 Position 2. 修改maxwell的配置 SELECT * from positions p ;将…

Vue3 项目中 svg 图标的封装及使用

安装 npm install vite-plugin-svg-icons -D在 vite.config.ts 中配置插件&#xff1a; import { createSvgIconsPlugin} from vite-plugin-svg-icons; import path from path;plugins: [createSvgIconsPlugin({iconDirs: [path.resolve(process.cwd(), src/assets/icons)],s…

Java并发关键字

并发关键字 关键字: synchronized详解关键字: volatile详解关键字: final详解 # Synchronized可以作用在哪里? 对象锁方法锁类锁 # Synchronized本质上是通过什么保证线程安全的? 加锁和释放锁的原理 深入JVM看字节码&#xff0c;创建如下的代码&#xff1a; public cl…

探索TXE、TC、RXNE标志位在串口通信中的轮询与中断应用

浅谈一下STM32串口中断之TXE,TC,RXNE标志位 之前做一个项目&#xff0c;用到了串口中断&#xff0c;但是对TXE、TC和RXNE标志位的作用和使用方法不是很清楚&#xff0c;导致在调试过程中遇到了一些问题。通过查阅相关资料和实际操作&#xff0c;我对这三个标志位有了更深入的了…

【机器学习】——决策树模型

&#x1f4bb;博主现有专栏&#xff1a; C51单片机&#xff08;STC89C516&#xff09;&#xff0c;c语言&#xff0c;c&#xff0c;离散数学&#xff0c;算法设计与分析&#xff0c;数据结构&#xff0c;Python&#xff0c;Java基础&#xff0c;MySQL&#xff0c;linux&#xf…

材料科学SCI期刊,IF=6+,2个月录用,审稿速度非常快

一、期刊名称 Journal of Materials Research and Technology 二、期刊简介概况 期刊类型&#xff1a;SCI 学科领域&#xff1a;材料科学 影响因子&#xff1a;6.2 中科院分区&#xff1a;2区 三、期刊简介 《材料研究与技术杂志》为发表与材料加工、性能和性能相关的理论…

el-tree 获取当前勾选节点的选中状态以及选中值对象 触发check-change多次事件问题原因

1.需求 现在需要一个树状结构的资产树 但是现在需求是 获取当前选中的值的状态是选中还是取消选中 然后再用当前选中 or 取消选中的值 进行 选中 or 取消选中的操作 一开始使用的是 check-change 方法 接收参数如图 但是我勾选父节点 或者 子节点后 他会打印一堆数据 是因…

园区智慧能源可视化:智能监控与优化能源管理

通过图扑可视化技术&#xff0c;搭建智慧光伏园区&#xff0c;实时监控园区光伏系统的运行状态&#xff0c;分析数据并优化能源管理&#xff0c;提高发电效率和维护效率&#xff0c;助力园区实现绿色可持续发展。

Java-01-源码篇-04集合-04-Properties

目录 一&#xff0c;简介 二&#xff0c;源码讲解 2.1 Properties 继承结构 2.2 Properties 属性分析 2.3 Properties 构造器 2.4 Properties 加载配置资源文件 2.4.1 load(inputStream) 2.4.2 load(Reader) 2.4.3 load0(LineReader lr) 2.4.4 load测试 2.5 Properti…

电子产品分销商 DigiKey 在新视频系列中探索智能城市中的AI

电子产品分销商DigiKey推出了一系列新视频&#xff0c;深入探讨了AI在智能城市中的集成应用。这个名为“智能世界中的AI”的系列是其“城市数字”视频系列的第四季&#xff0c;它审视了城市环境中从基础设施到公共服务的多种AI硬件和软件的部署情况。 该系列由电子制造商莫仕&…

VMware取消中文支持,替换vSAN解决方案提上日程!

What is vSAN &#xff1f; 是一款软件定义的企业存储解决方案&#xff0c;支持超融合基础架构系统。vSAN与VMware vSphere 完全集成在一起&#xff0c;作为ESXi Hypervisor内的分布式软件层&#xff0c;通过整合、池化ESXi各个主机上的存储资源&#xff0c;为vSphere虚拟化平…

Python静态类型检查工具库之mypy使用详解

概要 在 Python 开发中,类型错误是常见的问题,尤其在大型项目中,类型错误可能导致代码难以调试和维护。为了提高代码的可靠性和可维护性,静态类型检查工具如 mypy 应运而生。mypy 是一个静态类型检查工具,它通过在 Python 代码中添加类型注释,实现编译时的类型检查,帮助…

【数据库】MySQL基本操作语句

目录 一、SQL语句 1.1 SQL分类 1.2 SQL语言规范 1.3 数据库对象与命名 1.3.1 数据库的组件(对象)&#xff1a; 1.3.2 命名规则&#xff1a; 1.4 SQL语句分类 二、基本命令 2.1 查看帮助信息 2.2 查看支持的字符集 2.3 查看默认使用的字符集 2.4 修改默认字符集 2.5…

【Python画图-seaborn驯化】一文学会seaborn画因子变量图catplot函数使用技巧

【Python画图-seaborn驯化】一文学会seaborn画因子变量图catplot函数使用技巧 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 免费获取相关内…

人工智能项目论文复现

文章目录 &#xff08;一&#xff09;技术学习任务Ⅰ、机器学习之聚类1、基本介绍概念2、聚类分析基本介绍3、K均值聚类4、K近邻分类模型(KNN)5、均值漂移聚类6、代码实现7、上述三种算法总结 Ⅱ、机器学习其他常用技术1、决策树基本知识2、异常检测概念3、主成分分析4、决策树…

JVM:介绍

文章目录 一、什么是JVM二、JVM的功能1、解释和运行2、内存管理3、即时编译 三、常见的JVM四、Java虚拟机规范五、HotSpot发展历程 一、什么是JVM JVM的全称为Java Virtual Machine&#xff0c;Java虚拟机。本质上是一个运行在计算机上的程序&#xff0c;职责是运行Java字节码…