上海大学生-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
京麒CTF-2024-re-wppossible-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
1234567891011121314151617181920212223 ...
铁三2024-re
2024 信息安全“铁人三项” 逆向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; //设备扩展对象 RtlInit ...
路由器漏洞挖掘初探
最近刚入门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)的参数,我们称之 ...
安卓逆向初探
环境配置整一个redmi老年机,解bl锁,线刷android11,上magisk面具,安装 zygisk+LSPosed 框架即可。可以创建一个LSPosed寄生管理器快捷方式。
由于我的测试机是 redmi9A,非常罕见的处理器是 v8a,但是系统是 32 位的,没有 arm64 的动态链接库,所以刷机配环境这一块折腾了很久,浅浅记录一下:
刷系统我们先从 小米 ROM 找到对应机型的线刷包,然后使用 miFlash 进行刷机,当然刷官方提供的系统有一万种方法,刷进去就行,当作底包,也是一个从砖机恢复的手段。
这个网盘里有一些 redmi 9A 的工具,Redmi 9A官方版下载,我们可以从里面找到安卓驱动,miFlashPro,搞机助手等工具,以及非官方的自制 LineageOS系统和自制 TWRP recovery.img。
在刷入官方提供的 ROM 以后,其实大部分机型到这里就可以了,但是因为我这个是 32 位的,得接着刷emmm。
按住音量下键和关机键进入 FASTBOOT 引导模式,在该模式下我们把 TWRP 文件夹中的 recovery.img 刷入手机中覆盖官方的 re ...
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 ...
蓝帽杯(取证杯)2022半决赛WP
EXE 取证1-5嫌疑人手机微信聊天记录 dump 出压缩包和密码,放在微步在线沙箱中五个一把梭子。
APK取证jadx-gui工具。
1APK signature 直接可以看到。
2base64 decode aHR0cHM6Ly9hbnNqay5lY3hlaW8ueHl6
4Manifest.xml1<meta-data android:name="DCLOUD_STREAMAPP_CHANNEL" android:value="exec.azj.kny.d.c|__W2A__nansjy.com.cn|127356250608|"/>
5
感觉这个也算安全检测,选了是
7assets/html 下有三个页面
8解压缩以后找到Info.plist这个文件
12<key>CFBundleIdentifier</key><string>com.dd666.hongxin</string>
包名就是com.dd666.hongxin
912<key>APIKey</key ...
蓝帽杯(电子取证杯)2022赛题复现
当时比赛的时候只做了程序分析,还得是mmr大爹和se大爹最后AK了电子取证还出了个pwn+web直接起飞了。
逆向只有一道题,纯坐牢呜呜呜。:<
LOADER64bit程序,无壳,IDApro打开以后主函数只有几行
12345678int __cdecl main(int argc, const char **argv, const char **envp){ DWORD flOldProtect; // [rsp+30h] [rbp+8h] BYREF VirtualProtect(&unk_7FF6741C3040, 0x34166ui64, 0x40u, &flOldProtect); sub_7FF6741C1040(&unk_7FF6741C3040); return 0;}
查询MSDN可知,VirtualProtect函数的作用是修改任何进程的访问保护,语法为
123456BOOL VirtualProtect( [in] LPVOID lpAddress, // 要更改其访问保护属性的页面的区域的起始页的地址 ...