SFuzz论文笔记
简介RTOS系统当下并没有很好的分析方式,因此作者提出了sfuzz工具,利用RTOS每一项任务的控制流都是独立的特点,从RTOS系统中切出独立的代码块进行fuzzing。 项目地址:https://github.com/NSSL-SJTU/SFuzz 解决问题解决了在当时RTOS领域模糊测试没有很好的分析方式的问题。 主要贡献 提出了RTOS系统的特点:每一项任务的控制流都是相互独立的,通过代码切片获取到独立的代码树,分别进行分析 使用了前向切片与后向切片,根据依赖和函数调用关系获取了代码片段以供fuzz 设计了SFuzz,对RTOS进行灰盒测试。 尚存不足具体内容sfuzzing一共分为四个模块,分别为Forward slicer,Control Flow Nodes Handler,Micro Fuzzing,Concolic Analyzer。 Forward Slicer由上图可知,forward...
P2IM论文笔记
简介背景:模拟以MCU为处理器的固件设备并没有完全的模拟外设,导致fuzzing时外设需要实际物理设备,速度偏慢,且没有达到完全模拟。 主要实现了一个可以模拟在MCU下运行的固件的模拟器P2IM。通过自动化外设接口的建模来进行自动化,可扩展的模拟。 特点:对mcu架构下的寄存器进行分类识别,在qemu模拟时同时模拟这些寄存器值的操作,从而模拟出了firmware外设的一系列操作。保证了firmware在qemu上的稳定运行的同时加入了外设的模拟。 解决问题当时对固件的模拟需要软硬件结合,导致fuzz的效率很慢,因此提出了一种模拟器对固件完全模拟的思路,通过实现对固件外设寄存器的分类并模拟以达到完全模拟的目的。 主要贡献实现了对无硬件模拟 提出了P2IE(外设接口等效属性):为了定义怎样的仿真是好的仿真 提出了MMIO寄存器四种模型:对四种模型的行为进行了定义 探索性执行技术 尚存不足 寄存器分类可能存在错误(eg:...
P2IM复现
导师说要多实践,因此将看过的P2IM论文进行复现,同时对源码进行简单查看。 看网上并没有相关的复现教程,因此写下该博客 链接: https://github.com/RiS3-Lab/p2im 1. 环境Ubuntu 16.04 !!!(重中之重!其他版本可能不成功) GNU Arm Embedded Toolchain:https://developer.arm.com/downloads/-/gnu-rm fuzz target: https://github.com/RiS3-Lab/p2im-real_firmware/tree/d4c7456574ce2c2ed038e6f14fea8e3142b3c1f7/binary 2. 过程 首先下载p2im源码 12git clone https://github.com/RiS3-Lab/p2im.gitcd p2im 下载子项目 123# submodules are cloned into externals/git submodule update --initgit submodule update...
uEmu复现
1. 环境Ubuntu 20.04(最好分配大于20G存储空间,否则可能不够用) gitee链接:https://gitee.com/cpdt/uEmu.git virtualbox 2. 步骤 克隆下载uEmu 1git clone https://gitee.com/cpdt/uEmu.git 使用vagrant Installation方式复现(不推荐,感觉和直接源码安装没区别,还要多出安装虚拟机的步骤,虚拟机套虚拟机。。。还容易崩溃。。。),安装virtualbox 12sudo apt install vagrantsudo apt install virtualbox 启动虚拟机 1vagrant up 需要等几分钟,第一次会下载ubuntu镜像,这里放一个清华源镜像,添加到vagrantfile里: 1config.vm.box_url =...
【SeedLab】格式化字符串实验报告
1 Overviewprintf函数用于根据指定格式打印出字符串,第一个参数诶格式化字符串format string,格式化字符串中使用了%来作为占位符。如果不使用%占位符而是直接将变量放入格式化字符串,则存在格式化字符串漏洞,可能被恶意利用。 2 Environment Setup2.1 Turning of Countermeasure关闭ASLR 12❯ sudo sysctl -w kernel.randomize_va_space=0kernel.randomize_va_space = 0 2.2 The Vulnerable Program漏洞程序如下 format.c:myprintf存在漏洞printf(msg); 1234567891011121314151617181920212223242526void myprintf(char *msg){#if __x86_64__ unsigned long int *framep; // Save the rbp value into framep asm("movq...
【SEED Lab2.0】Return_to_Libc实验报告
Task1:Finding out the Addresses of libc Functions 获取system函数和exit函数地址 gdb批处理命令,新建文件peda-session-retlib.txt,进行批处理操作 Task2:Putting the shell string in the memory 编写getprt.c来获取环境变量地址 getprt.c: 12345678#include<stdlib.h>#include<stdio.h>void main(){char* shell = getenv("MYSHELL");if (shell) printf("%x\n", (unsigned int)shell);} 设置/bin/sh的环境变量,获得地址: 将代码加入到retlib.c中,获取到地址,可以发现地址与getprt的地址相同。(如果开启aslr或者两文件名长度不同则会不同) Task 3: Launching the...
get_started_3dsctf_2016 WriteUp
考点 对栈溢出函数带参数的溢出理解 解题内容 使用checksec工具查看基本信息: 1234567❯ ~/.local/bin/checksec ./get_started_3dsctf_2016[*] '/home/bronya/Documents/ctf/pwn/get_started_3dsctf_2016/get_started_3dsctf_2016' Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE...
【SEED Lab2.0】缓冲区溢出实验报告
stack_overflow(setuid)环境配置配置环境,关闭ASLR地址随机化,将/bin/sh链接到/bin/zsh(/bin/dash以及/bin/bash都实现了一种安全对策, 防止自己在Set-UID进程中执行。 基本上,如果它们检测到它们是在一个Set-UID进程中执行的, 它们会立即将有效的用户ID更改为该进程的真实用户ID, 基本上会放弃特权 ) 123❯ sudo sysctl -w kernel.randomize_va_space=0 kernel.randomize_va_space = 0❯ sudo ln -sf /bin/zsh /bin/sh Task1: 熟悉shellcodeshellcode C代码实现: 12345678#include <stddef.h>void main(){ char *name[2]; name[0] = "/bin/sh"; name[1] = NULL; ...
某二次元游戏私服搭建总结
简述经过大概几个小时的配置环境并debug,终于把Genshin Impact和星穹铁道的私服配置好了。中间也学到了很多东西,以下对整个过程做一个总结。 需要的环境Genshin...
ciscn_2019_c_1 WriteUp
考点 libc版本泄漏 ROP攻击 onegadget使用 解题过程 使用checksec工具进行查看,程序为64位,NX保护 使用ida工具反编译。 main: encrypt: 可以看出程序功能为对输入字符串进行加密,而加密encrypt函数中的get存在栈溢出漏洞。 由于在程序中找不到system函数和/bin/sh字符串,所以需要进行ROP攻击,泄漏其libc地址,使用onegadget工具直接获取shell。 使用ROPgadget工具获取泄漏libc地址所需的指令地址(pop rdi; ),然后获取程序中put_got表和put_plt表地址,执行栈溢出payload构造如下 1payload = flat(b"\0", b"a"*(0x50-1), 0x0, pop_rdi, puts_got, puts_plt,...