【babyheap_0ctf_2017】WriteUp
checksec查看,保护全开,可以查看是否有堆的漏洞 123456[*] '/home/bronya/Documents/CTF/pwn18/babyheap_0ctf_2017' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled ida查看: main函数提供了菜单以及选择功能 1234567891011121314151617181920212223242526272829__int64 __fastcall main(__int64 a1, char **a2, char **a3){ char *v4; // [rsp+8h] [rbp-8h] v4 = sub_B70(); while ( 1 ) { sub_CF4(); switch ( sub_138C() ) { ...
Kernel Pwn 学习之路(一)
参考链接:Kernel Pwn 学习之路(一) 1. 前言本文主要介绍Kernel的相关知识以及栈溢出在Kernel中的利用。 2. Kernel简介本部分全文引用了CTF-Wiki的相关内容。 2.1 什么是Kernelkernel也是一个程序,用来管理软件发出的数据I/O请求,讲这些要求转译为指令,交给CPU和计算机中的其他组件处理,kernel是现代操作系统最基本的部分。 Kernel最主要的功能有以下两点: 控制并与硬件进行交互 提供application能运行的环境 包括I/O,权限控制,系统调用,进程管理,内存管理等多项功能都可以归结到上边两点中。需要注意的是:kernel的crash通常会引起重启 2.2 Ring 模型intel CPU 将CPU的特权级别分为4个级别:Ring 0, Ring1,… ,Ring3。 Ring0只给OS使用,Ring3所有程序都可以使用,内层Ring可以随便使用外层Ring的资源。提升系统安全性 大多数操作系统只使用了Ring0,Ring3。 2.3 状态切换User space to kernel...
国内外安卓应用市场对比调研
分析国内外安卓应用市场的差异,可以用作相关论文的背景素材 1. 应用市场规模成碎片化特点 安卓市场规模巨大(>77%) 应用市场多达400个,其中有25个主流应用市场佐证材料: Statista数据——Market share of the Android app stores in China as of May 2022 As of May 2022, Huawei AppGallery was the top Android app store in China with a market share of about 44 percent. China’s technological advancement combined its ban on Google has caused its Android market to be flooded with several competing smartphone manufacturers each with its own app store.(国内市场碎片化的原因:GooglePlay被禁,国内技术发展)In...
DSE论文笔记
简介通过建立一个比较简单的语法简单中间语言(A simple intermediate language,SIMPIL)。对Dynamic taint analysis和forward symbolic execution进行了讲解。 SIMPIL 动态污点分析动态污点分析:跟踪源头与sink点的信息流。任何由污染源推导的值都是污点(T),其他值看作未污染。 两种错误: overtainted:假阳性 undertainting:假阴性 动态污点分析策略Taint Introduction将用户输入作为污染源 Taint PropagationTaint Checking查看是否污染 前向符号执行前向符号性可以通过建立逻辑表达式分析程序在不同输入下的行为。属于静态分析。
Linux内核模块-交叉编译器
GCCGNC C Compiler —> GNU Compiler Collection 包括编译器、链接器、binutils、glibc、头文件 支持多种语言(C、C++、Java、Go)和多种硬件平台(X86、ARM、MIPS、RISC-V) Clang编译器的构成 Frontend:源码分析、语法检查,输出中间代码 Optimizer:对中间代码进行优化、使其运行更高效 Backend:将中间代码转换为某一个平台的机器代码 编译器的实现 GCC:前端和后端分离,支持多种语言、多个平台。但缺点:前后端耦合高,代码可重用性低。 LLVM(Low Level Virtual Machine)框架:模块化设计,代码可重用性高;中间语言LLVM IR,类C表达,可扩展各种前端、后端;支持C/C++/Java等语言 使用LLVM框架的编译器: LLVM GCC:前端使用GCC(Apple) Clang:LLVM+Clang前端(使用C/C++)(Apple,Android) 方舟编译器:编译优化(Java虚拟机,效率提高),鸿蒙系统
LKM编程
Chapter 1. Introduction1.1. What Is A Kernel Module?Linux系统内核:宏内核(与微内核相对),使用内核模块实现动态模块的加载运行。 简介 优点 缺点 宏内核 将进程调度核心功能,驱动程序,网络协议、文件系统都放入内核态 效率高 一个出错就崩溃 微内核 只将核心功能放在内核态,其他放在用户态以进程形式运行 驱动程序出错不影响内核运行 效率低 LKM:用于扩展内核的功能,运行在内核态,为ELF二进制文件,如果不使用内核模块,会导致需要给内核添加功能时只能重新编译整个内核,不是很方便。 1.2. How Do Modules Get Into The Kernel?使用lsmod命令查看已经加载到内核的模块(/proc/modules)。 使用modprobe命令加载指定模块到内核(自动查询模块的依赖关系进行加载/lib/modules/version/kernel/*/*.ko) 使用insmod命令加载模块到内核,不会查询依赖关系(modprobe调用该命令) 12345insmod...
模糊测试分类
根据程序执行反馈的获取情况,可以将模糊测试分为白盒、黑盒和灰盒三类 一、白盒测试白盒测试通过分析被测程序的内部机制和执行被测程序时收集的信息来生成测试用例,白盒测试通常会对程序进行动态污点分析或符号执行以获取精确的程序分析和状态信息。 二、黑盒测试黑盒测试将测试对象当作黑盒,按照指定的规范随机生成测试用例。不提前分析程序内部机制也不接受反馈信息来更新测试用例。 三、灰盒测试灰盒测试的典型特点就是可以使用目标的执行反馈来指导测试用例的生成。
【SeedLab】Magic Padding Oracle实验报告
1. OverviewPadding Oracle:一些系统在解密密文时,会先验证其填充是否合法,如果不合法则会抛出异常。针对此行为的攻击即为padding oracle攻击 2. Lab Environment Seed虚拟机 Labsetup.zip 使用dcbuild和dcup命令启动docker环境 3. Task1:Getting Familiar with PaddingPadding:分组加密算法要求明文长度需要为分组长度的整数倍。因此需要padding填充末尾使长度满足要求 使用echo -n创建文件P,长度为5。-n参数表示结尾不带换行符 1echo -n "12345" > P 使用openssl命令对文件进行加密,并且对加密文件解密查看padding 12345# 加密openssl enc -aes-128-cbc -e -in P -out C# 解密openssl enc -aes-128-cbc -d -nopad -in C -out...
【网络攻防大作业】Return_to_libc实验报告
1.环境搭建 修改flag为学号 构建docker镜像(运行sudo ./build.sh,注意chmod +x修改权限),连接不稳定,可能需要多次尝试 开启docker,禁用ASLR。 使用netstat -antp查看ssh服务状态 登录容器ssh 0.0.0.0 -p 49153 -l seed 2. 漏洞利用运行镜像中vuln程序,vuln有setuid权限,因此可以尝试通过此来获取root shell。 查看vuln源代码: 12345678910111213141516171819202122232425262728293031323334353637383940#include <stdlib.h>#include <stdio.h>#include <string.h>#ifndef BUF_SIZE#define BUF_SIZE 12#endifint bof(char *str){ char buffer[BUF_SIZE]; unsigned int *framep; ...
Fuzzware论文笔记
摘要实现了模拟器Fuzzware,特点:减少了fuzz的input开销,节省了时间。 解决问题针对当前几种对固件模拟fuzz的方法的局限性进行了分析 high-level模拟:通过挂钩完全绕过MMIO的模拟。局限:过于high-level,无法发现外设驱动代码的漏洞。 pattern-based...