- 博客(35)
- 收藏
- 关注
原创 overlapping heap(以0ctf babyheap为例)
(主要是对上面两个 writeup 的补充和思路的整理)这道题主要分为两个步骤为什么我们需要泄露 libc 地址呢,因为我们需要知道 malloc_hook 的地址。而 malloc_hook 是一个 libc 上的函数指针,调用 malloc 时如果该指针不为空则执行它指向的函数,可以通过将 mall_hook 指向一个 onegadget 来 getshell。
2023-05-10 17:19:46
170
1
原创 SROP(Sigreturn Oriented Programming)
如图所示,当有中断或异常产生时,内核会向某个进程发送一个 signal,该进程被挂起并进入内核(1),然后内核为该进程保存相应的上下文,然后跳转到之前注册好的 signal handler 中处理相应的 signal(2),当 signal handler 返回后(3),内核为该进程恢复之前保存的上下文,最终恢复进程的执行(4)。会从用户栈上恢复恢复所有寄存器的值,而用户栈是保存在用户进程的地址空间中的,是用户进程可读写的。和其他的系统调用串起来,形成一个链,从而达到任意代码执行的目的。
2023-05-04 22:50:10
683
原创 ret2csu(以ciscn_2019_s_3为例子)
栈迁移顾名思义就是将原来的程序栈迁移到另一个地方,使得我们可以将构造的 ROP 链完整的填入。那么想要修改栈的位置,那么就需要修改寄存器 esp 和 ebp 的值。想要修改 esp 和 ebp 的值,我们需要用到leave和ret两个 gadget。
2023-05-04 22:41:02
309
原创 栈迁移(ciscn_2019_es_2)
栈迁移顾名思义就是将原来的程序栈迁移到另一个地方,使得我们可以将构造的 ROP 链完整的填入。那么想要修改栈的位置,那么就需要修改寄存器 esp 和 ebp 的值。想要修改 esp 和 ebp 的值,我们需要用到leave和ret两个 gadget。
2023-05-03 11:49:59
442
原创 Android SmartTVs Vulnerability Discovery via Log-Guided Fuzzing 论文笔记
开发了一种新的动态模糊方法,其特点是基于日志的动态输入规范推导和反馈收集。我们的解决方案进一步引入了一种新的外部观察者,它可以监测与电视相关的物理症状 (即视觉和听觉),以检测潜在的身体异常。
2023-04-25 17:22:14
191
1
原创 Extractor:Extracting Attack Behavior from Threat Reports 论文笔记
提出 EXTRACTOR,可以从 CTI 报告中精确提取简洁的攻击行为可以提取非结构化文本,对文本没有要求。
2023-04-20 11:47:23
298
原创 南大软件分析第十二节——Pointer Analysis - Context Sensitivity II
本节讲上下文敏感的过程间指针分析的算法。
2023-04-11 15:41:43
120
原创 南大软件分析第十一节——Pointer Analysis - Context Sensitivity I
对于上述这段代码,当我们不考虑上下文去处理第 5、6 行的 id 函数调用的时候,id 的参数和返回值会和两次调用的参数和返回值杂糅在一起,这样假如在进行常量传播的时候,变量 i 就会被分析为 NAC,这是不对的。OO 程序是典型的堆敏感,因为程序会频繁的修改堆,所以也要对堆抽象添加上下文。C:上下文(暂时用调用点的行数表示),O:对象,F:对象中的域。老师在这里进行举例表示上下文敏感和堆的上下文敏感缺一不可。不考虑堆的上下文敏感,只考虑分析的上下文敏感。考虑堆的上下文敏感,不考虑分析的上下文敏感。
2023-04-09 16:05:29
106
原创 VulHawk Cross-architecture Vulnerability Detection with Entropy-based Binary Code Search 论文笔记
目的:对不同架构、不同编译器、不同优化级别编译的 IoT 固件映像进行二进制代码搜索来识别代码重用提出了一种新的中间表示函数模型,是一种用于跨体系结构二进制代码搜索的体系结构不确定模型将二进制代码提升为 IR,通过补充隐式操作数和删除冗余指令来保留二进制函数的主要语言使用 NLP 和卷积生成函数嵌入将编译器、架构和优化级别的组合称为一个文件环境,采用 divide-and-conquer 策略将CN2C_N^2CN2个跨文件环境场景的相似性问题转化为N−1N-1N−。
2023-03-21 14:32:55
562
1
原创 Semantic-Informed Driver Fuzzing Without Both the Hardware Devices and the Emulators 论文阅读笔记
驱动接收来自用户空间或硬件的复杂且不可信的输入驱动代码本身不可靠,开发开发人员经验少,开发结束后难测试目的:构建不需要设备的驱动 fuzzing 系统通过 semantic-informed 机制可以高效生成可以通过验证链的输入,所以不需要硬件设备了推断合法的输入值推断输入字节的时间使用顺序来缩小变异空间使用错误状态作为反馈来指导 fuzzing 通过验证链semantic-informed 机制是通用的可以生成半畸形输入来提高覆盖率。
2023-03-16 11:07:29
227
1
原创 智能计算系统实验——基于三层神经网络实现手写数字分类
-- layers_1. py 全连接层、relu 层、softmax 层实现。`-- stu_upload 具体的实现文件夹,填空就在这个文件夹。该文件中的功能和 mnist_mlp_cpu. py 中的 evaluate 函数基本相同,不赘述。注意维度要对齐,relu 层和 softmax 层没有需要更新的参数。|-- main_exp_2_1. py 主文件。`-- mnist_mlp_cpu. py 组网。
2023-03-08 21:59:00
1380
2
原创 南京大学软件分析第九节——Pointer Analysis - Foundations I
视频:南京大学《软件分析》课程09(Pointer Analysis - Foundations I)哔哩哔哩_bilibili课程主页:Static Program Analysis | Tai-e (pascal-lab.net)笔记参考:(34条消息) 【课程笔记】南大软件分析课程—16课时完整版_bsauce的博客-CSDN博客_南京大学软件分析软件分析 - 知乎 (zhihu.com)PPT: Pointer Analysis: Foundations (nju.edu.cn)首先确定分析
2023-03-07 17:31:24
241
原创 HALucinator Firmware Re-hosting Through Abstraction Layer Emulation 论文笔记
背景:硬件和固件之间的紧密耦合以及嵌入式系统中的多样性使得对固件进行动态分析变得困难。现状:固件开发人员经常使用抽象,如硬件抽象层(HAL),来简化他们的工作。方法:利用这些抽象作为重新托管和分析固件的基础。通过为 HAL 函数提供高级替代(一个称为高级模拟 - HLE 的过程),将硬件和固件分离。首先通过二进制分析定位固件样本中的库函数,然后在全系统模拟器中提供这些函数的通用实现。工作:对现有库匹配技术进行扩展,可以识别二进制固件中的库函数;
2023-03-07 11:09:53
377
1
原创 Hawkeye: Towards a Desired Directed Grey-box Fuzzer 论文阅读笔记
目的:提高灰盒模糊器的指向性方法:静态分析收集信息(调用图、函数和基本块级别的目标距离);基于静态信息和执行跟踪评估执行的种子,生成动态指标,用于种子优先级、能量分配和自适应变异创新:新颖的静态分析、动态指标生成效果:相比于 AFL 和 AFLGo 等最先进的灰盒模糊测试器,Hawkeye 可以更快地到达目标站点并重现崩溃。特别是,Hawkeye 可以将暴露某些漏洞的时间从约 3.5 小时缩短至 0.5 小时。输入为程序源码和 target sites(以所在基本块和函数的形式)
2023-03-03 23:06:05
416
1
原创 南京大学软件分析第八节笔记
视频: 南京大学《软件分析》课程 08(Pointer Analysis课程主页:Static Program Analysis | Tai-e (pascal-lab.net)笔记参考:(34条消息) 【课程笔记】南大软件分析课程—16课时完整版_bsauce的博客-CSDN博客_南京大学软件分析软件分析 - 知乎 (zhihu.com)PPT: Pointer Analysis (nju.edu.cn)CHA 算法存在缺陷(上一节课有说)上一节提到过 CHA 算法是针对 call site
2023-02-27 21:00:51
172
原创 Fine-Grained Compiler Identification With Sequence-Oriented Neural Modeling 论文阅读笔记
现有的大多数方法都采用基于特征匹配或基于机器学习的策略来识别编译器细节,在检测精度或粒度上都有限制。在这项工作中,我们提出了 NeuralCI (基于神经建模的编译器识别) 来推断这些编译器细节,包括编译器家族、优化级别和单个函数的编译器版本。其基本思想是建立面向序列的神经网络来处理使用轻量级函数抽象策略生成的规范化指令序列。为了评估 NeuralCI 的性能,构建了一个由从 19 个广泛使用的现实项目中收集的 854, 858 个独特函数组成的大型数据集。
2023-02-26 10:25:00
116
1
原创 Identifying Compiler and Optimization Level in Binary Code From Multiple Architectures 论文笔记
在比较不同的二进制文件时,确保相同的编译器和编译标志尤其重要,以避免不准确或不可靠的分析。要理解使用了哪些标志和优化,需要对目标体系结构和所使用的编译器有深入的了解。在这项研究中,我们提出了两种深度学习模型,用于检测编译二进制文件中的编译器和优化级别。我们研究的优化级别是 x86_64、AArch64、RISC-V、SPARC、PowerPC、MIPS 和 ARM 架构中的 O0、O1、O2、O3 和 Os。
2023-02-22 16:02:37
126
原创 南京大学软件分析第七节笔记
视频: 南京大学《软件分析》课程07(Interprocedural Analysis课程主页:Static Program Analysis | Tai-e (pascal-lab.net)笔记参考:(34条消息) 【课程笔记】南大软件分析课程—16课时完整版_bsauce的博客-CSDN博客_南京大学软件分析 软件分析(七)Inter-procedural Analysis - 知乎 (zhihu.com)软件分析 - 知乎 (zhihu.com)PPT: Interprocedural An
2023-02-20 18:13:53
349
原创 Automatic Recovery of Fine-grained Compiler Artifacts at the Binary Level复现
要重现第 6.1 节的结果,请运行。我们使用 LightGBM 的 MLJAR AutoML 包装器来方便地再现混淆矩阵。由于’ numpy ‘版本号不同,分类器可能会报告错误,但这些错误不会影响分类。一旦分类器终止,F-1 分数可以在’ automl1 /README 中找到。md ‘作为’ metric_value ‘,规范化的混淆矩阵 (图 2) 可以在’ AutoML_1/ 1_Default_LightGBM/confusion_matrix_normalized. png '中找到。
2023-02-20 14:41:46
85
原创 第22次CCF-CSP计算机软件能力认证题解
这种选择问题一般就是 DP,为啥呢,当确定选择区间 A 后,后续可以有不同情况,当继续选择区间 A、B 后后续又有不同情况,这种情况的结构很像树,从一个结点延伸很多种情况,这种用 DP 来动态的推结果,一般叶子结点存储的结果就是答案。题意大概就是往不同的区间内插树,要求是要么在整个大区间树之间的距离是等差的,要不然是在不同的子区间内是等差的,然后障碍物的地方不能插树。在 y 总的代码中还有一个巧妙的点在于,如何去判定插树的位置有没有避开障碍物呢,代码的第 25 行和 st 数组解决了这个问题。
2023-02-19 18:38:36
621
原创 Automatic Recovery of Fine-grained Compiler Artifacts at the Binary Level 论文阅读笔记
识别二进制编译器配置使开发人员和分析人员能够定位由优化副作用引起的潜在安全问题,识别二进制克隆,并构建兼容的二进制补丁。现有的工作重点是使用语义特征和深度学习技术识别编译器家族、版本和优化级别。本文想要探索恢复二进制文件中每个函数的单独的、细粒度的优化传递。为此,我们开发了一种使用专门设计的功能以及直观和可理解的机器学习模型的方法。
2023-02-18 18:06:33
92
1
原创 FIRM-AFL_ High-Throughput Greybox Fuzzing of IoT Firmware via Augmented Process Emulation 论文笔记
FIRM-AFL 是第一个针对物联网固件的高通量的灰盒模糊测试器解决了兼容性问题——对可以在系统仿真器仿真的 POSIX 兼容固件进行模糊测试解决了性能瓶颈——增强进程模拟的新技术增强型进程仿真以一种新颖的方式将系统模式仿真和用户模式仿真结合起来,提供了系统模式仿真的高兼容性和用户模式仿真的高吞吐量。看来本篇文章的主要工作在于这个增强进程仿真技术挑战:兼容性和性能。第一个挑战可以通过全系统仿真来解决,但这会导致较差的性能。第二个挑战可以通过用户模式模拟解决,但会导致兼容性较差。
2023-02-09 23:08:56
342
原创 闫氏DP分析法
题干:N 个物品,每个物品有对应的价值和体积,背包容量为 V,如何选择物品使得在不超过背包容量的前提下,价值之和最大。每个物品都可以选和不选,两种选择,那么一共有2N两种方案,所以题目是一个有限集合的最值问题,所以可以用 y 氏 DP 法来分析。
2023-02-07 12:20:15
126
原创 物联网固件安全缺陷检测研究进展 论文笔记
归纳典型物联网固件实现缺陷类型、产生机理评价静态分析、符号执行、模糊测试、程序验证、基于机器学习的方法。
2023-02-04 21:48:57
918
1
原创 第23次CCF计算机软件能力认证题解
与岛屿问题类似,p 表示海平面高度,数组 a 表示山峰高度,非零段的数量表示岛屿数量。第 161 行的 mod 操作是对存储空间的优化,因为实际上在循环时间的时候我们需要用到的或者需要修改的数据是当前时间点和距离当前时间点延迟 d 后的时间,所以对于时间我们只需要维护一个长度为 d 的滚动数组即可。第 125 行,关于二维数组 I,第一维度时间,d 的大小不超过 1000,但是因为为了使得地址连续(一个小优化)所以取为 1024,然后第二维度是神经元,因为只有神经元才需要记录,脉冲源不需要。
2023-02-03 22:37:45
198
原创 南京大学软件分析第六节笔记
最后我们来梳理一遍第六节课的内容。首先我们想要知道我们的迭代算法是否可以达到不动点,并且达到的不动点是不是最优的,所以我们得看迭代算法是否满足不动点定理的条件有限单调接下来我们讨论了迭代算法的复杂度,知道了最坏的迭代次数然后我们从 lattice 的角度重新审视了 may 和 must 分析,这里的两个图非常直观明了。接着我们用 MOP 来衡量了一下迭代算法的精度指出了满足分配律的转移函数的算法的精度和 MOP 一样同时也介绍了一种不满足分配律的分析最后给出了迭代算法的优化。
2023-02-03 17:29:31
279
1
原创 What You Corrupt Is Not What You Crash Challenges in Fuzzing Embedded Devices 总结笔记
后续作者针对错误检测这一个问题,将嵌入式设备分为三类进行测试,将它们的反应分为了 6 种情况。[[What You Corrupt Is Not What You Crash Challenges in Fuzzing Embedded Devices#Observed Behavior]]我觉得第一部分就是这篇文章的亮点,切入点很好。其次这篇文章相对于其他开发一套 fuzz 框架,或者提出某种方法的论文学术意味更强,因为工作量主要在实验上,文章最后的启发式发方法更像是展望,而不是一个具体的成果。
2023-02-01 10:50:08
157
原创 What You Corrupt Is Not What You Crash Challenges in Fuzzing Embedded Devices 论文笔记
传统的测试方法依赖于程序中看的见的崩溃, 而二进制插装技术是用来改善针对这些缺陷状态的检测方法演示了 memory corruption 漏洞,展示 embedded devices 和 desktop systems 的不同分析了几种 embedded devices 设备的差异
2023-02-01 10:48:44
323
原创 The Progress, Challenges, and Perspectives of Directed Greybox Fuzzing 总结笔记
The Progress, Challenges, and Perspectives of Directed Greybox Fuzzing 的归纳总结
2023-01-31 10:51:45
87
原创 The Progress, Challenges, and Perspectives of Directed Greybox Fuzzing 论文笔记
定向灰盒模糊技术的进展、挑战与展望
2023-01-11 22:57:52
326
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人