上海大学生-2024-re
看着都是 ez 题emm
ezRe前面一个假的加密解出一个假的flag{how_is_the_weather_today},然后 SMC 进去解真flag,RC4,假flag是key
ezloginDES+base64,key从so里直接拿
easy_iotbinwalk 解包,然后进squashfs-root,用 stat filename 查看时间戳
bash的 modify时间是 2024-3-19,看起来是动过的,upx -d一下解密即可
stm32ida 8.3 能把函数修的很好,但是没有 decompiler,只能用 ida7.7 对着一点点修emmm
用 ida 打开,调下参数把 format 变成 arm-littie_endian : armv7-M,这个架构默认的入口地址是 0x8000000,根据这个创建ROM段,选择其基址为 0x8000000
看一下STM32的内存映射图
主要看的是 flash:0x08000000-0x0807FFFF, SRAM:0x20000000-0x3FFFFFFF, Peripherals:0x4 ...
京麒CTF-2024-re-wp
possible-doorrust tauri 逆向,需要一定脑洞,题目描述比较抽象 sometimes history repeats itself伏笔。
先解包出 js 代码,在最下面发现前后端用 invoke 交互和与远程 http 交互的逻辑,先用 waitnum 从后端拿一个随机数,然后用这个随机数作为 ecdsa 的私钥,再生成对应的公钥,setInterval 是一个监听函数,每次 function x 收到远端发来的请求,格式是 updateType, data ,通过流量包分析,data 是一个文件路径,op1 和 op2 对应list_dir 和 read_file,用 invoke 和后端交互执行完对应函数以后,把返回值交给 function h 再 POST 回去。
返回包的格式为 Publickey, ecdsa.sgin(msg, privatekey), msg,都是加密过的,那么既然前端没有加密逻辑,肯定就藏在后端,结果出题人12点才给符号emmm
12345678910111213141516171819202122232425262728293031 ...
铁三2024-re
ez_driver & kernel两个驱动逆向,先放一个链接
Windows 驱动开发 新手入门(一)_windows驱动开发-CSDN博客
理论知识部分代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647NTSTATUS DriverAddDevice(PDRIVER_OBJECT pDriverObj, PDEVICE_OBJECT pPhysicalDeviceObject){ DbgPrint("AddDevice\n"); NTSTATUS status = STATUS_SUCCESS; UNICODE_STRING deviceName; UNICODE_STRING linkName; PDEVICE_OBJECT pDeviceObj = NULL; //创建设备对象 PDEVICE_EXTENSION pDeviceExt = NULL; //设备扩展对象 RtlInitUnicodeString(& ...
路由器漏洞挖掘初探
最近刚入门IOT安全,孩子一脸懵,学长推荐了一本书 《揭秘家用路由器0day漏洞挖掘技术》,慢慢啃一会儿先。
一些前置芝士各种环境,书中主要介绍了MIPS架构,基于QEMU开发运行环境,然后用buildroot搭建编译环境,这里先用轻量级的 mips-linux-gnu-gcc 搭建编译环境,用 qemu-mips-static 搭建用户级的运行环境,先凑合用吧。
各种工具:binwalk,idapro及相关插件,qemu,MIPS交叉编译环境等
还有就是 MIPS 堆栈原理,比较重要的有:
栈操作:MIPS32 架构堆栈与x86架构一样,都是向低地址增长的。但在MIPS32 架构中没有EBP(栈底指针),进入一个函数时,需要将当前指针向下移动 n 比特,这个大小为 n 比特的存储空间就是此函数的 Stack Frame 的存储区域。此后,栈指针便不再移动,只能在函数返回时将栈指针加上这个偏移量恢复栈现场。由于不能随便移动栈指针,所以寄存器压栈和出栈时都必须指定偏移量。
调用:如果函数A调用函数B,调用者函数(数A)会在自己的栈顶预留一部分空间来保存被调用者(函数B)的参数,我们称之 ...
BeginCTF2024-re-wp
红白机6502汇编,直接找一个在线网站编译运行一下即可
Easy 6502 (codediy.github.io)
Xorupx -d去壳,然后一堆轮密钥异或,细致一些就可以
1234567891011121314151617181920212223242526272829303132333435#include<bits/stdc++.h>using namespace std;char enc[] = "`agh{^bvuwTooahlYocPtmyiijj|ek'p";char key1[] = "63290794207715587679621386735000";char key7[] = "41803873625901363092606632787947";char key2[20], key3[20], key4[20], key5[20], key6[20], key8[20], key9[20], key10[20], key11[20];int main(){ fo ...
L3HCTF-2024-部分复现
day1聚会去了直接摸鱼,结果队里的爹们直接全给干完了,day2跟师傅们一起把reAK了,只能说OIer多少带点傻逼的
babycom调试可以发现释放了一个dll文件在 C:\Users\Username\AppData\Local\Temp
继续调试到
再 F7 可以进入加密函数
创建函数反编译后发现是一堆 XTEA 加密
key是这个
最后还有一个 advapi32_CryptEncrypt
密文是Buf1
解密即可,参考 CryptEncrypt 函数 (wincrypt.h) - Win32 apps | Microsoft Learn
1234567891011121314151617181920212223242526272829303132333435363738394041#include<iostream>#include"Windows.h"#include<windef.h>#include<stdint.h>unsigned char enc[] ={ 0x0B, 0xAF, 0x5 ...
XCTF2023-re-部分复现
我不是病毒2.0大概是萌新唯一有能力复现的题了吧,太菜了呜呜呜呜呜,打比赛的时候做 flappy-bird 做了一天真的逆不动,看来得 allin 一下安卓了。
对着 官方wp 和 大爹战队的wp 复现的。
[原创]Python逆向——Pyinstaller逆向-软件逆向-看雪论坛-安全社区|安全招聘|bbs.pediy.com (kanxue.com)
题目是个 exe 文件,查壳发现是 pyinstaller 打包的程序
用 pyinstxtractor.py 解包,但是注意附件的 python 环境是 3.10 的,所以本地的 python 环境也得是 3.10,否则解包出来的 PYZ-00.pyz_extracted 文件夹是空的。PYZ-00.pyz_extracted非常重要,一般一个稍微大一点的项目都会分成多个py文件,甚至会依赖其他模块,这些被依赖的文件解析后都会放入PYZ-00.pyz_extracted中,可以说这里放的是核心代码。
可以看到 pyinstxtractor.py 中有检测 MAGIC_NUMBER 也就是检测了 python 版本。
我们修 ...
ChaCha20 - Salsa20学习笔记
前几天做 mcmc 遇到一个魔改的 Chacha20算法,顺便学一下,抄的这份博客 。
Chacha20 加密算法算法简介
ChaCha20-Poly1305 是一种 认证加密 算法。 ChaCha20-Poly1305加密时无需硬件加速,而且加密速度通常比AES-GCM更快,所以某些 移动设备中会优先采用ChaCha20-Poly1305加密算法。ChaCha20-Poly1305由两部分组成,分别是Poly1305和ChaCha20。 —— 摘自【维基百科】
初始化矩阵ChaCha20 加密的初始状态包括
一个128位常量(Constant),常量的内容为 0x61707865, 0x3320646e, 0x79622d32, 0x6b206574
一个256位密钥(Key)
一个64位计数(Counter)
一个64位随机数(Nonce)
一共64字节其排列成 4 * 4 的 32 位字矩阵如下所示:(实际运算为小端)
1
2
3
4
Constant
Constant
Constant
Constant
Key
Key
Key
Key
Key
Ke ...
vnctf2023 - 复现
复现期间去郑州玩了一趟,先复现一下数据安全的 re 题,当时在线下做了nm 90%最后发现密钥都写脸上了就是没出😅😅😅
Butterfly安卓逆向,先看 AndroidManifest.xml 找 MainActivity
check 函数是 static 方法,明显要逆 so ,解压以后 ida 打开,是个 arm 架构的。
字符串窗口可以搜到 check 字符,查查交叉引用,用 JNIEnv * 修复一些函数以后,发现注册了一个 native 方法
sub_1FD80 就是我们要找的 check 函数,点进去翻翻找到了 yyyyyy 这个函数,显然是被混淆了,但是没有关系,直接选中汇编创建函数然后反编译即可
同时发现相邻的函数
非常可疑,点进去一眼 AES,cipher 就是 yyyyyy 里的 v6,密钥和 iv 都是 1234567890123456
cyberchef 一把梭 flag{welc0me_backTo_obfuscation}
PZGalaxy直接 view - source 一下就能找到源码,一看是个 RC4 加密
123 ...
HGAME 2023 week3 & week4 writeup
patchmemain 函数里有个 gets,同时翻了翻发现有一段代码,里面有个 mprotect 下面是对一个大数据段的异或操作,显然是个 SMC,一个比较 pwn 的方法是利用 get 的漏洞改汇编然后跑出 flag,也可以直接逆。
由于只是一个简单异或,考虑用 idapython 直接实现 smc 的解密
12345from idc_bc695 import *addr = 0x14C6for i in range(961): PatchByte(addr, Byte(addr) ^ (0x66) & 0xFF) addr += 1
解密完的数据 analyze 以后得到关键代码
123456789101112131415161718192021#include <bits/stdc++.h>#include <stdint.h>using namespace std;long long v9[6], v13[6];int main(){ v9[0] = 0x5416D999808A28FALL; v9[1] = ...