自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 ByteCTF2021 BabyDroid WP

官方 wp: https://shvu8e0g7u.feishu.cn/docs/doccndYygIwisrk0FGKnKvE0Jhg。

2025-05-24 14:23:31 295

原创 Dockfile 构建过程 RUN 一行命令配置清华镜像

docker:3.12.7 镜像使用的是 debian 系统,比 ubuntu 更轻量。​ubuntu是debian派生出来的系统,二者都使用 apt 作为包管理工具,但是二者的镜像列表文件路径不同。需要根据系统类型选择不同的命令。

2025-05-19 22:04:09 296

原创 雷电模拟器安装 KitsuneMagisk (原 Magisk-delta)

在 2025 年,Magisk delta 这个分支的安装可能有极强的时效性,因为仓库的重要维护者弃坑 / 没时间精力,最佳实践随时会变。

2025-05-19 15:00:59 946

原创 CTFd CSRF 校验模块解读

实现上传头像功能的时候遇到了 403,隐约感觉到可能是 csrf 的问题,但是嫌麻烦一直懒得翻源码里的校验逻辑,反而让自己怀疑是 mime type 有限制,走了弯路。机缘巧合发现了 csrf 的校验位置,总算是通了。

2025-05-11 16:09:01 224

原创 CTFd 文件上传模块解读

CTFd 的 utils.uploads 模块提供了文件上传功能,支持多种存储后端(如 S3 和文件系统)。用户可通过配置 UPLOAD_PROVIDER 切换存储方式。模块的核心功能由 upload_file 函数实现,负责将文件上传到指定后端,并在数据库中创建或更新文件元数据。upload_file 支持多种文件类型(如标准文件、挑战文件、页面文件),并自动处理文件路径和哈希计算。模块还定义了 BaseUploader 基类,提供了存储、上传、下载、删除等基本操作,FilesystemUploader

2025-05-10 16:54:51 225

原创 Burpsuite 伪造 IP

可以用于绕过 IP 封禁检测,用来暴力、绕过配额限制。也可以用来做 ff98sha 出的校赛题,要求用 129 个 /8 网段的 IP 地址访问同一个 domain。

2025-03-31 14:16:46 270

原创 ubuntu 创建新用户

其中 .bashrc 在 interactive shell 的情形下会执行 .profile。在 .profile 里给 PATH 添加本地环境 ~/.local/bin。给实验室服务器建用户,会担心除了基本的用户创建以外有没有别的没考虑到的。问了一下似乎没有,就按最基础的来就可以。自动创建的 home 包含 `.bashrc`, `.profile`.

2025-03-27 14:04:12 366

原创 论文阅读:LLift. Enhancing static analysis for practical bug detection: An llm-integrated approach.

静态分析工具常常要权衡精确性和 scalability。论文考虑到了一种编码 pattern,即 ubi 之后,有 path constraint 剪枝掉出错的分支,如下图。LLM 方面,

2025-03-24 03:01:00 949 1

原创 论文阅读:DefectHunter.A Novel LLM-Driven Boosted-Conformer-based Code Vulnerability Detection Mechanis

传统漏洞检测方法耗时费力;基于机器学习的方法在复杂数据集上难以捕捉高维特征(?这是什么);基于深度学习的方法不能捕捉足够的特征信息(?自注意力机制能处理长距离信息,但是没法捕捉结构信息(structural information?因此,本文提出 DefectHunter 工具,同时提取语义和结构。DefectHunter 使用 Conformer 机制,将自注意力机制和 CNN 融合,用来同时捕获局部位置特征和基于内容的全局交互。

2025-03-23 02:49:34 615 5

原创 论文阅读:Attention is all you need

当前用来解决 seq2seq 问题的模型通常包含 CNN 和 RNN,并且整体架构通常形如 encoder-decoder。并且,时下(2017) 的 SOTA 结果通常会在 encoder 和 decoder 之间用 attention 联系起来。本文提出一个新的结构,transformer,仅依靠注意力机制,可以有效对长距离进行建模,是 CNN, RNN 的有力平替,实验表明效果好,并行度高,收敛快。

2025-03-21 02:19:41 879 1

原创 win10/win11 解决 Ctrl+.(Ctrl+oem_period) 热键冲突

按照这篇博客,网易云音乐会把热键配置到系统热键里抢占掉。1. 在 vscode 的 Keyboard Shortcuts 设置里发现单独按下 ctrl 或者 oem_peroid 有反应,合起来没法检测到,估计是被抢占了。系统自带的中文输入法,有一个切换中英问句点的快捷键,占用了 Ctrl+oem_period,导致 vscode 接收不到该组合。在系统的语言设置里把他关了就好。4. surf the Internet 随机刷到了一个说要配置输入法热键的,扫了一眼发现上图的 Ctrl+句点,解决。

2025-03-19 15:39:47 374

原创 Facebook Infer (fbInfer) 快速上手

写的比较清楚了,提供 binary 和 docker image,仅支持 linux。官方给了个在线的,不过不知道为啥我跑不起来一点,可能是网的问题。

2025-03-18 01:12:02 316

原创 论文阅读:LibHunter. Xie. How Does Code Optimization Impact Third-party Library Detection for Android App

LibHunter 这个工具名称和之前的论文冲了前人的 TPL 版本检测工具声称对混淆有抵抗力,但缺少对代码优化的考虑。本文系统调研了优化策略会如何影响现有的 TPL 版本检测工具,并根据调研结果,开发了LibHunter,可以抵抗主要的代码优化方法,并且也抗混淆和代码优化。

2025-03-07 15:40:17 647 5

原创 快速理清 Attention 注意力和 Encoder, Decoder 概念

之前一直以为 Attention 和 RNN 没关系是凭空蹦出来的新概念;以为 Transformer, Encoder, Decoder 这几个概念是绑在一起的。并不尽然。

2025-03-05 17:19:05 719

原创 补丁供应链案例:CVE-2024-7254. Protobuf. Google

​查看 github advisories 列表,定位到 patch 的 java 版本是 3.25.5,打开到 25.x 分支。事后发现相关修复最早出现在 2024 年 7月,merge 到 25.x 分支是 9 月 19,与 advisories 的时间引证。这个库的 issue 和 comment 里没有直接写 cve 编号,不太好找相关的 pr 和 commit,在网上搜到了一篇博客,提到了问题来自这个 parser,并在 reference 里给了个 commit 的 link。

2025-03-05 11:39:15 427

原创 论文阅读:PHunter. Xie. Precise and Efficient Patch Presence Test for Android Applications against obfs

因此,补丁存在测试(PPT)的必要性就体现出来了,通过比对目标程序和 pre-/post- patch reference 的相似度,可以进行更细粒度的比对。现在确定了 target 的一个候选方法,需要沿方法的程序路径,进行细粒度检测比对补丁存在性。我们首先要定义,给定的两个路径之间,在三个维度上的相似性,然后再在两个方法的层面上,把两个路径列表的元素两两匹配,取最好情况。进入第二章,首先在 2.1 介绍了应用混淆的现状,然后 2.2 介绍了 TPL 检测和 PPT 的现存方法。论文说这种场景很常见。

2025-03-04 02:48:48 967 1

原创 2014-DefCon22: Hack All The Things: 20 Devices in 45 Minutes

这个 oral 来自 GTVHacker 团队。这项工作用 UART(tx/rx), eMMC, 命令注入三种方法直接连接到板载芯片,和芯片搭载的软件系统通信或修改存储,获取 root可以把 UART, Rx/Tx 接口理解成平行于 USB 接口的一种设备接口,或者网口。这是一种通信协议,需要芯片里实现类似驱动的软件,决定连接握手后发送什么信息。

2025-03-02 15:26:28 567

原创 联想 SR590 服务器 530-8i RAID 控制器更换损坏的硬盘

新硬盘此时应当处于 JBOD 状态,也就是不在任何 RAID 组里,直连系统。在 drive management 选择 make unconfigured good 让这个盘回到可配置状态,再在同样位置再设置为 dedicated hot spare 并选择 array0作为dedicated 对象。似乎旧版硬件会默认新盘是给系统的新 blk,不符合预期的自动恢复。进到系统发现 RAID 控制器还在报警,可能是因为重建中。开机后系统会暂停在 IPMI 启动后,进系统前,提示你配置 RAID 控制器。

2025-02-25 20:24:28 1043

原创 Attanger: Zotfile 插件在 Zotero7 的平替

里广泛使用的插件,但是作者弃坑了。zotero 官方最近在力推 zotero7,而 ZotFile 又不支持 7,这就让用户很难办(摊手)。ZotFile 的 issue 里有相关的讨论,在 24 年下半年,大家找到了一个平替。的插件(by @MuiseDestiny),是一位国人开发者。

2025-02-14 18:50:14 966 1

原创 got, plt

以防丢失,记录一下linux 下的动态链接是通过 PLT, GOT 实现。我们考察 test.c, test.o, test 来说明首先通过查看反汇编,考察 glibc 的printf。在 .o 文件 call printf 的时候地址先用(有符号数 -4) 代替,交由链接器处理。.text段的权限是 rx,在这里填写的地址运行时无法修改。所以,链接器需要生成一个跳转代码段(即 plt 的一项),作为中介跳转到动态库(.data)

2025-02-13 03:25:51 466

原创 android 动态库加载机制

省流:android 不兼容 glibc,而是写了一套独立的 c 运行时库 (bionic libc),为移动设备和 google 自己推的东西做了大量优化。在这套工具链里,aosp 实现了一个兼容 bionic libc 的链接器,放到系统中代替 ld。​​​Android动态库的加载原理,真的理解了吗?一文带你游览动态库的加载流程,从 Java 到 C++,一步一步探索知识的 - 掘金。开始,执行流通过 jni 跳转到了 c 函数。好像有点跑题了,我都忘了在哪看到的。,往里跟踪的其他 c 文件。

2025-02-08 00:34:37 513

原创 理解链接动态库:二进制的调库

弱链接允许在编译阶段声明某个符号为“可选”的(或说“弱”),这样在运行时即使目标动态库中不存在该符号,程序也不会链接失败。机缘巧合仔细了解一下才发现二进制的调库原来跟 python, js 这种语言的依赖引用是很像的,把库以二进制 dll/so 的形式放在 path 下面,让系统能找到,然后用路径和名称调用符号就行了。)自动读取 ELF 文件中的依赖信息,并加载所有必需的动态库。在编译和链接阶段已经将动态库的依赖信息写入到可执行文件中,运行时,操作系统的动态链接器会自动加载这些库并解析其中的符号。

2025-02-07 23:08:15 434

原创 回退 android studio emulator 的版本

最近用 frida 需要一个完全跑 arm64 的手机 os,因为雷电实时转义 arm 到 x64 的方案本质上还是 x64,会导致 frida 有 bug。其实就是把原来的 emulator 文件夹删了(备份),把新的解压,再把原来文件夹里面的 xml 复制过来,改一下最下面的模拟器版本就好。原本是在 x64 机器上也能匹配到 arm64 的,现在只能在 native 原生 arm 的机器上才能匹配。该 patch 导致该函数返回 NULL,触发报错。的镜像,尝试用 27 的镜像,又报错。

2025-02-07 01:40:27 761

原创 frida 通过 loadLibrary0 跟踪 System.loadLibrary

AOSP 实现 loadLibrary 的代码在 libcore/ojluni/src/main/java/java/lang/System.java,该实现调用了 Runtime 的 loadLibrary0 函数,后者不是 callerSensitive 的,frida 可以 hook。由于 apk 从 java 层开始启动,过早地 hook 原生代码会找不到函数。是一个 callerSensitive 的方法,其内部利用反射机制,从 JVM 的调用栈 callStack 获取 caller 的类。

2025-02-06 23:25:52 285

原创 PTRACE_TRACEME 与反调试

是 Linux 的经典反调试手段,因为系统限制调试是独占的,一个进程只能有一个 debugger。静默跟踪:父进程可通过 PTRACE_SEIZE(非侵入式跟踪)或直接忽略跟踪事件,避免触发信号暂停,使子进程看似未被调试。即使父进程不进行任何实际跟踪操作,该插槽已被占用,导致外部调试器无法通过常规手段附加。利用时间差:在子进程调用 PTRACE_TRACEME 前,父进程或外部程序能快速附加调试器,仍可拦截子进程。设置标记不代表子进程立刻就会被中断,必须收到停止信号时才会被父进程捕获。

2025-02-06 17:09:02 1182

原创 frida 入门

上面依赖中出现的gum是 frida 的动态插桩核心库Gum的意思。Gum用 C 开发,支持访问整个内存空间。考虑到 hook 的代码变化会很频繁,frida 又提供了一套脚本语言的 apiGumJS,为用户省去构建流程,缩短逆向开发时的反馈周期。在运行时,Gum和GumJs被打包成共享库注入到目标进程内。自定义脚本在用户进程中,通过 ipc 跨进程代理变量访问。这一打包、注入、双向通信的工作由frida-core完成。frida-core。

2025-02-03 23:39:52 885

原创 XCTF - IllIntentions wp

这道题本身逻辑不复杂,有一个和三个二级 Activity。主 activity 是空白页面,注册了一个 Receiver,在接收到特定 Action 后会根据参数选择一个 activity 启动。每个 activity 内部会调用 jni 计算一个字符串,从返回值拿到结果,最后将该字符串用 broadcast 广播成一个 Intent。例如,IsThisTheRealOne 的成员函数有 jni 的接口,和一个 OnCreate 入口函数。

2025-01-29 15:17:08 768

原创 XCTF Illusion wp

ndk(jni) 题。题目逻辑很简单,用户输入一个字符串,传递给 native checkFlag 函数验证。如果 encode 结果和预定义 ref 字符串相同就是 flag。需要反解输入,但由于这是个逐字符加密的算法, 逐字符打表破解就可以。(打表再反过来求解不如直接暴力调用 encode 函数,因为同一个位置有不同解)我让 gpt 在 python 复现了 encode 的逻辑,值得注意的是,ida 的反编译结果不完整。可以从传参不完整看出来(没看出来就寄了)

2025-01-28 16:32:14 414

原创 二进制安卓清单 binary AndroidManifest - XCTF apk 逆向-2

XCTF 的 apk 逆向-2 题目 wp,这是一道反编译对抗题。

2025-01-27 18:35:24 1176

原创 ida-python 解决 idapython3_64.dll: can‘t load file

结合 dll 的名字并在网上搜了下,这个 dll 属于 ida-python 插件。于是显然这个插件跑不了,console 里只能执行 IDC 语句不能跑 python 脚本。需要重新配环境。

2025-01-27 02:46:14 1210

原创 音频 PCM 格式 - raw data

例:如果音频是 44,100 Hz 的采样率,单声道,16 位位深,1 秒的数据大小就是 44100×1×244100 \times 1 \times 244100×1×2 字节(约 88 KB)。一段 1 分钟的 44,100 Hz 立体声音频,用 PCM 格式大约是 10 MB,但用 FLAC 压缩后可能只有 5~7 MB。一段 1 分钟的 44,100 Hz 立体声音频,使用 MP3 编码(128 kbps)后可能只有 1 MB,但音质与原始音频接近。比特率决定了压缩后的音频文件的大小和音质。

2025-01-24 03:37:43 1805

原创 XCTF - 0CTF boomshakalaka wp

这是 0CTF2016 年的题,可能出题人那会在研究 cocos 和移动游戏,时过境迁 cocos 已经不用 cpp 了令人感叹这题我自己不会,看的网上的 wp。基本上都是瞎猫碰上死耗子,搜到关键函数找规律逆向判定逻辑,解出来 flag 完事。没人是真的从事件循环啥的入手解的 flag。

2025-01-23 05:52:22 248

原创 ssh, git 配置多对公私钥

其实很简单,在 config 里加一个 Host 指明依赖的私钥,就可以用不同身份访问 git@github.com。然后把本地 repository 的 git remote 连接更新为 <Host>:GithubName/repo.git 即可。然后把 git remote 的连接中 git@github.com 替换成 github-new 即可。此时 ssh github-new 的身份是 new。

2025-01-15 06:16:11 511

原创 安卓题导入测试 flag 排坑 receiver:export、background

在 byteCTF 2024 的 jsbMaster 题目里,安卓应用定义了一个 FlagReceiver 组件获取 Intent('flag', ) 的值,用作 webView 的待获取 Cookie。在出题人给的 apk 里,这个 receiver export=false,只能接受同包名,同签名程序的 broadcast。所以首先要修改 manifest 的值,改成 true。在 java 中,出题人似乎也习惯采用类似的技巧,把 flag 生成器和题目本身分离,然后只给选手提供题目部分。

2025-01-01 03:42:58 152

原创 DinD docker 嵌套部署踩坑

最近要把一个 web 服务容器化部署。开发的时候没写 dockerfile,部署的时候可头疼死我了。把相关的依赖在 dockerfile 里装好,写好环境变量用了 6h。然后更重量级的来了,DinD 的路径需要填 host 的路径,container 里调用 docker 的时候需要做映射目录的转换,这东西还不好调试;

2024-12-29 03:04:39 517

原创 dockfile FROM python 配置 /etc/apt/source.list.d/debian.list 清华镜像

docker:3.12.7 镜像使用的是 debian 系统,比 ubuntu 更轻量。debian 系统内,apt 镜像源列表位于 /etc/apt/source.list.d/debian.list(作为对比,ubuntu 的镜像列表位于 /etc/apt/source.list,二者语法相同)。其中,sed -i 表示原地修改文件,s 是替换命令,会按 : 分隔,把前两个冒号之间的文本替换成后两个冒号之间的文件。为了方便编译镜像,需要修改 apt 镜像源。修改 debian 镜像源的命令是。

2024-12-27 22:25:25 598

原创 0ctf-2024: KubeVirt wp & Kubernetes 入门

k8s 是一个容器编排引擎,可以在上万容器的工况下自动扩缩容,在 docker 之上多了编排功能。k3s 是 k8s 的轻量级实现,目标是减半 k8s 的内存开销。k8s 集群包含控制平面 control plane 节点和 worker nodes。控制平面通过冗余部署应用和服务的容器,实现分布式高可用集群。在1.20 版本之前,容器由 docker 提供;在这之后,k8s 直接调用更底层的 container runtime (如 containerd)实现容器调度。

2024-12-27 14:59:11 1076

原创 0ctf 2024: numbers writeup

但需要注意的是,直接跑 encoding_for_model(‘gpt-4o’) 的结果和网站的分词结果不一致。在 web 前端项目的源码搜索 gpt-4o,查找调库的接口,发现调用的是 o200k 然后额外指明了 3 个 token。写 decoder 的时候需要用 extending 的接口显式指定这三个 token。所以题干是 token_ids 的 list。用的是 gpt-4o 的模型。谷歌搜索开头的 5 个数字,会发现 tiktokenizer 的 web 项目(baidu飞马)。

2024-12-24 15:40:26 515

原创 AL 逆向解包:live2d, spine 动态立绘,背景图

Live2d 工具:Cubism;按笔者理解,Live2d 通过 u3d 的插件制作成 prefab 被加入到 u3d 工程里。编译后被 u3d 打包到 APK 资源目录的 AssetBundles 目录下。该目录的二级目录会被 u3d 再次打包(笔者实验中见到了 .ys 文件和无后缀文件),可以使用 AssetStudioModGUI 工具解包复原目录结构。(有文章说 AssetRipper 是一个好用的 u3d 解包工具,我没试过)逆向解包的资料很杂,网上有很多创意工坊作者分享的教程。

2024-12-23 02:57:21 3413 3

原创 cocos creator 快速开始笔记

如图,UI 幻视 ps、unreal、vscode。应该说前端的逻辑会趋同嘛……文档讲的很清楚,我觉得很关键的组件是用树来组织对象的层级管理器,感觉是带命名空间的图层这种感觉。引入 TS 的基本逻辑是先写个脚本,填写生命周期函数,然后选中场景中的物体,在属性面板关联该脚本。通常,一个游戏是靠不同的脚本逻辑驱动进行的。在 CC 中,每个 TS 脚本定义了一个组件 Component。将组件挂在到某个节点上(拖动 or 在属性检查器上 AddComponent)就可以生效。

2024-12-17 22:04:15 533

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除