自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(122)
  • 资源 (1)
  • 收藏
  • 关注

原创 PD runner 启动失败~没有权限~不起作用~

Pd runner

2022-09-01 16:34:37 4450 16

原创 clair、anchore、trivy开源数据库的数据来源分析

总体来说,trivy/anchore 所做的工作,可以用下面这张图表示具体的数据做法是从各个厂商以及公开渠道获取相关的CVE信息文件,然后周期性自动下载,解析成自定义的标准格式,最后存到数据库中其中,trivy 用到了 OSV 的部分数据, clair 用到了 snyk 的部分数据我们应该在上述的漏洞来源中加入国产漏洞库。

2022-08-19 17:03:24 1424

原创 将trivydb转转化为mysql、sqlite的小工具

将trivydb转转化为mysql、sqlite的小工具。

2022-08-03 18:46:04 479

原创 trivy如何从非关系型数据库查询数据

我们主要看一下如何获取所有CVE的 Get 方法1.Get 的调用链如下 `Get -> GetAdvisories -> ForEachAdvisory -> forEach`2.这实际上就是上面提到的从函数中推测 `forEach`,我概括一下主要步骤3.首先获取 os-release 对应的 bucket, 这里面有一个嵌套的 pkgName 的的 bucket4.通过pkgName 获取对应饿的 pkg bucket,里面就有 CVE 以及对应的 pkg 版本信息...

2022-07-25 15:07:43 637

原创 trivy 源码分析(扫描镜像中的漏洞信息)

把总结放在开头,能让我们看源码的时候有掌控全局的感觉。扫描逻辑其实很简单的,首先需要获取镜像中的各种资产信息(OSPackage等)然后需要根据(镜像的OS信息+pkg信息)查询相关的待选CVE然后在匹配当前的pkg的版本号,是不是CVE中fixed的版本号,如果不是就记录该CVE如果想要魔改或者抽取,建议直接看,从image获取pkg信息以及根据OS以及pkg查询CVE这两个函数如果就想知道扫描流程,看到这就已经够了。...

2022-07-20 16:39:16 1740 3

原创 harbor scanner 从原理到构建

为了让harbor能够支持更多的漏扫工具(大家也都知道,一些做安全的公司自己内部是会维护和积累漏洞信息的,但是这样的信息并不会开源出来),因此harbor有必要提供一个通用的框架能够使用户能够自定义sanner,以此检查harbor中image的漏洞信息。如是,harborsanner应运而生。......

2022-07-14 16:17:14 529

原创 Harbor webhook从原理到构建

harbor webook 从原理到构建

2022-06-27 18:45:54 2347

原创 【docker启动报错】(code=exited, status=1/FAILURE、 Failed to start Docker Application Container Engine)

docker启动问题

2022-06-23 10:21:05 3364

原创 [autoharness] fuzzbuilder论文阅读

fuzzbuild概述本篇论文主要介绍了如何从单元测试自动化构建fuzz。要点在于对单元测试的llvm中间表示进行插桩,通过FuzzAPI中的函数手册,将单元测试的输入修改为fuzz 传入的参数,包括data和size。在此之前通过在lib中插入相关的指令,收集单元测试使用的seed,这样就获得了fuzz和seed.本篇论文主要利用了单元测测试已经搭建好的环境,修改了两个变量的地址给fuzz前提条件一个单元测试的LLVM IR表示Fuzzable API(lib、fun、pars)(接受输

2022-03-15 09:58:48 393

原创 totolink固件获取(硬件方法)

totolink固件分析固件获取(硬方法)前提准备准备好路由器和一个USB flash writer用于读取路由器flash中存储的固件动手操作拆开路由器,找到flash芯片(可以先用串口调试,这里没有工具,就没调)安装ezp xpro v2(flash writter的驱动)根据安装包中的提示,先禁止驱动证书,然后安装writter的驱动安装好驱动后打开软件,显示如图这里应该将路由器的芯片,插入flash writter 的引脚槽中实际上我没有

2022-03-15 09:57:10 8257

原创 linux进程创建源码分析

进程的创建进程创建流程a. do_fork主要处理clone、fork、vfork系统调用 1. 先检查父进程的ptrace字段,如果父进程被跟踪了,则根据clone_flag的信息,对子进程进行相关操作 2. 调用copy_process()函数将fork()之前的信息复制一份给 子进程。这里包含了出现异常nr=0的情况 3. 如果是vfork的话,直接初始化完成处理信息。 4. 用wake_up_new_task()函数将新创建的进程加入到调度器中,为其

2022-03-02 09:53:06 591

原创 linux 安全模块开发基础知识

linux 安全模块开发一、内核编译与调试1. 编译内核进入到下载好的Linux内核文件中,将配置文件中的选项清空make allnoconfigmake menuconfig 进入配置文件菜单选项,将以下选择勾选64-bit kernel ---> yesGeneral setup ---> Initial RAM filesystem and RAM disk (initramfs/initrd) support ---> yesGeneral setup

2022-03-02 09:23:40 399 2

原创 [fuzz论文阅读] Symbolic execution for software testing: three decades later

Symbolic execution for software testing: three decades later背景介绍技术难点路径探索约束求解内存建模关键目标生成一组具体的测试用例,执行该路径检查是否存在各种错误,包括内存断言冲突、未捕获的异常、安全漏洞和内存损坏符号执行的优点比传统的动态执行技术更强大,不仅能够发现一般性的错误,还能够对复杂程序进行推理从测试生成来说,能够生成高覆盖率的测试用例从BUG寻找来说,能够提供具体的测试用例,方便确认和调试错误符号执

2022-01-27 19:43:00 1167

原创 [fuzz论文阅读] Sharing More and Checking Less: satc

Sharing More and Checking Less: satc背景嵌入式系统的漏洞驻留在其开放的web服务中现有的web漏洞检测,不适用于此类web服务(开销、假阴假阳)本文利用前后端共享的关键字定位参考点从嵌入式系统中寻找bug的关键点在于从前端web中寻找处理用户数据的后端代码,那些输入会被后端处理satc工作流程解压固件包,识别前后端文件从前端文件中提取关键字在后端文件中定位关键字处理函数,找出与用户输入相关的点进行污点分析satc解决的问题从前端中提取

2022-01-27 19:39:25 1362

原创 [_IO_FILE] 原理解析

FSOPCFF-WIKI中有如下描述FSOP 的核心思想就是劫持_IO_list_all 的值来伪造链表和其中的_IO_FILE 项,但是单纯的伪造只是构造了数据还需要某种方法进行触发。FSOP 选择的触发方法是调用_IO_flush_all_lockp,这个函数会刷新_IO_list_all 链表中所有项的文件流,相当于对每个 FILE 调用 fflush,也对应着会调用_IO_FILE_plus.vtable 中的_IO_overflow。触发条件梳理一下 FSOP 利用的条件,首先需

2021-11-10 13:36:35 3666

原创 【tcache stash unlink +】图解

tcache stashing unlink +tcache 的入链操作smallbin 入链操作tcache stash源码#if USE_TCACHE /* While we're here, if we see other chunks of the same size, stash them in the tcache. */ size_t tc_idx = csize2tidx (nb); if (tcache

2021-11-09 17:54:00 337

原创 【large bin 】源码解析

large bin attacklarge bin的结构网找了好久,没有一个形象的理解确实读源码不方便,找了好久,mkx7师傅的这篇文章总结的及其好!largebin 入bin操作当确定victim的大小在largebin范围后,如何将victim插入larbin的过程如下首先判断largebin 是否为空如果空的直接设置victim为victim size大小的chunk 头节点,并将fd_nextsize和bk_nextsize设置为victm如果largebin 不

2021-11-09 14:30:16 562

原创 IDA修复跳表

一、 IDA打开遇到JUMP CS命令这是由于GCC在编译超过5个switch的结构时会用跳表进行优化,变成上面的样子二、使用EDIT --> other --> specify switch将光标打在JUMP命令上按TAB键切换到汇编,然后才能进行编辑我解释一下各个参数的意义Address of Jump table:跳表的地址,cmp eax 5,之后跳到的地址,这里就是0x69E0Number of elements:switch 的个数,先前cmp eax 5,加

2021-11-08 12:03:20 1732

原创 [uaf + double free] de1ctf_2019_weapon

[uaf + double free] de1ctf_2019_weapon1. ida分析删除的时候,只是检查了index范围,没有检查是否存在,存在double free并且free后,指针没有置空,存在uaf限制了chunk大小,需要通过uaf 构造fake chunk,修改chunk head的大小,构造unstored bin attack2. 思路1⃣️申请3个chunk 0,chunk 1,chunk 2,用chunk 0伪造chunk 1 的head,free chunk

2021-09-22 20:43:04 285

原创 [uaf + off by one -> stdout leak libc] 长城杯pwn1

1. ida分析存在uaf 和 off by one,可以实现任意地址写没有show函数,且保护全开,不能修改got表2. 思路使用stdout爆破,泄漏libc先申请几个chunk,通过off by one,构造chunk lapping再通过uaf修改fd,构成任意地址写注意点就是,想法设法构造chunk复用uaf + off by one 总结一下就是,先del构造fastbin,再改chunk head构造unstored bin,再申请一个不是fastbin大小的chunk覆

2021-09-22 13:27:52 403

原创 LSM内核模块实现demo

一、demo编写1. 基本步骤确定hook点,这一步在原理解析中有分析,主要是根据sys_call,确定hook调用点按照自己的逻辑结构将hook函数实现,函数名可以不一样(我这里是实现的inode_create),可以根据想要实现的hook进行编写int huhu_inode_create (struct inode *dir, struct dentry *dentry, umode_t mode){ printk ("[+huhu] call [inode_create] by p

2021-08-23 15:58:57 832

原创 LSM框架原理解析

一、基本原理LSM框架的产生是为了提高Linux内核的安全性,其通过在内核中代码中设置一系列的hook函数点,在进行系统调用前进行相关函数的check,比如在sys_read系统调用中的hook函数为file_permission,进程产生中的hook函数为task_alloc。hook函数的作用,如下图所示,在DAC检查完之后,进行hook函数调用,进行自定义的权限的检查。二、实现原理1. 在内核源码中静态插桩(以sys_clone为例,其函数调用链如下)sys_clonedo

2021-08-23 15:16:02 936

原创 从sys_read分析LSM框架运行过程

sys_read实现过程sys_read interfaceasmlinkage long sys_read(unsigned int fd, char __user *buf, size_t count);read - implementSYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count){ /* 1. 文件描述符 struct fd {

2021-08-23 14:12:17 237

原创 [tcache double free + orw]MynoteMax

[tcache double free + orw]MynoteMax1. ida分析漏洞点和Mynote一样,但是加了沙盒禁用了execve,因此同样利用double free 和 uaf 进行 orw进行操作2. 思路本题需要从堆打到栈,需要利用一些通用的gadgets, 如setcontext + 53将 free_hook 设置为 setcontext +53,再在相应的chunk中布置相应的sigframefree掉相应的chunk触发setcontext(srop),

2021-07-11 23:53:07 214

原创 [tcache double free] Mynote

[tcache double free]1. ida分析存在double free 以及 uaf题目给的libc是早期的可以进行double free的2.27版本关于如何使用题目提供的libc进行调试,看ctf-pwn-patchelf-用题目给的libc运行二进制文件2.思路先填满tcache,使用unstored bin泄漏libc的地址(这里只能申请9个chunk,可以将chunk 0 释放7次,填满tcache)利用double free修改free_hook为system

2021-07-11 23:37:33 468

原创 ctf-pwn-patchelf-用题目给的libc运行二进制文件

用给定的libc进行调试首先根据题目给你的libc,查找相应版本的连接器然后去glibc-all-in-one中下载相应的ld文件glibc-all-in-one安装步骤https://github.com/matrix1001/glibc-all-in-one使用查看各unbuntu版本的glibc./update_listcat list下载对应版本的glibc./download 2.27-3ubuntu1_amd64下载好的glibc在l

2021-07-07 22:19:10 4958 6

原创 密码学-数字签名和认证协议(八)

数字签名和认证协议数字签名的基本要求签名必须是与消息相关的二进制串签名必须使用发送发特有的信息,防伪造或否认签名的阐释和识别比较容易伪造签名在计算上不可行保存数字签名拷贝是可行的数字签名的分类直接数字签名用发送方的私钥对整条消息进行加密来产生签名A−>B:EKPa(M)A->B:E_{KP_a}(M)A−>B:EKPa​​(M): 提供了鉴别与签名A−>B:EKUb[EKPa(M)]A->B: E_{KU_b}[E_{KP_a}(M)]A−&g

2021-06-15 16:14:02 333

原创 密码学-密钥管理技术(七)

密钥管理技术对称密钥管理技术密钥分配需求通信双方共享密钥,且不为他人所知保证通信安全,密钥需要经常变动分配方法人工第三方秘密通道最近使用的密钥,传输新的密钥缺点N个用户相互通信需要 N(N-1)/2个密钥典型的对称密钥分配模式密钥分配中心,负责分发密钥给需要的用户假定,AB拥有主密钥KA,KBK_A,K_BKA​,KB​,与KDC共享非对称密钥的管理技术公钥分配方法公钥的公开发布公钥可访问目录公钥授权

2021-06-15 16:12:53 463

原创 密码学-消息认证和散列函数(六)

消息认证和散列函数认证函数消息加密函数用完整信息的密文作为对信息的认证对称加密公钥加密和认证从根本上说,信息加密提供的是保密性而不是真实性消息认证码MACMAC是消息和密钥的函数,产生一个固定长度的值作为认证标识使用对称密钥实现MAC散列函数是一个公开的函数,将任意长度的信息映射成一个固定长度的信息是单向散列,且能够抗强弱碰撞与MAC的区别,没有密钥,输入只有一个能够检测出消息是否发生变化散列函数的应用对称加密散列码

2021-06-15 16:10:27 1083

原创 密码学-公钥密码算法(五)

公钥密码算法公钥密码实现认证与保密保密性认证认证算法加密整条消息加密部分消息(消息摘要)认证不能够保证消息的机密性所有有Bob公钥的人都可以查看消息认证+保密对称密码和公钥密码的区别RSA算法描述RSA算法中的元素两个素数,p、q,保密n = qp,公开e,gcd(ϕ(n),e)=1e, gcd(\phi(n),e)=1e,gcd(ϕ(n),e)=1,公开d,d≡e−1mod ϕ(n)d, d\equiv e^{-1}

2021-06-15 16:08:15 359

原创 密码学-对称密钥的应用(四)

对称密钥的应用实现保密性链路加密与端到端加密链路加密在通信链路两端加上加密设备每次分组交换都需要将消息解密,在交换节点暴露了信息的内容整个网络需要维护的密钥数量庞大接收者无法确定消息来源用户对分组交换节点的安全性不能保证端到端加密由源主机加密用户数据,信息头以明文方式传送密文经由网络传送到目的主机,目的主机与源主机共享一个密钥以便解密但是信息头在传输过程中为明文,易受流量分析攻击传输保密性数据传输分析可以得到的信息类型传输双方的标识(与谁通信)信

2021-06-15 16:05:40 589

原创 密码学-对称加密算法(三)

对称加密算法经典的Feistel网路构造思想用简单的算法的乘积来近似表达大尺寸的替换变换多个简单算法的结合得到的加密算法比任何一个部分算法都要强交替使用替换变换和排列混淆和扩散概念的应用扩散,使得明文和密文之间的关系变得更加复杂,简单方法是换位(置换)混淆,使得密文和密钥之间的关系变得近可能的复杂,简单方法是代替理想分组密码(什么是一个好的加密算法)算法固定明文和密文一一对应密文所有的统计特征都是独立于所用密钥分组密码的模型分组密码,将一个明文分组当作

2021-06-15 16:04:14 467

原创 密码学-数学基础(二)

密码学的数学基础有限域群、环、域三者的区别群是两个元素进行运算得到一个新的元素,需要满足的公理:封闭性、结合率、单位元、逆元交换群多一个交换律环是在交换群的基础上添加一种运算 .(不同于代数乘法),需要满足的公理:封闭性、结合律、单位元、逆元、交换律交换环多一个乘法的交换律域是在交换环的基础上,多了二元除法运算,并且对于每一个非零元素都存在乘法逆元密码学中为何采用有限域(明文、密钥、密文必须属于某个有限域)所有的加密算法都涉及到整数集上的算数运算,必须使用定义在域

2021-06-15 16:02:23 592

原创 密码学-绪论(一)

一、绪论概述信息安全的概念信息在产生、传输、处理、使用和销毁过程中的安全。 即信息生命周期的安全。信息安全解决的本质可信、可控信息安全的演化过程单计算机系统安全—>网络安全–>信息安全2000年之前,边界防护为主,严防死守,组织入侵2000年之后,信息保障需要有防护和恢复措施,降低损失,保障业务连续性信息安全的风险来源电磁泄漏、芯片的脆弱性、数据库的安全漏洞、操作系统的安全漏洞、通信协议的安全漏洞、移动存储介质的安全漏洞信息安全的威胁来

2021-06-15 16:01:08 132

原创 [house of force] bcloud

[house of force] bcloud1. ida分析漏洞主要在init函数输入name的时候,可以泄漏heap的地址org、host都用的read函数,因此都存在off by one32位系统中的off by one,最后很有可能是有值的,不是\x00,试一下就知道了,我这里试了一下,可以触发house of force2. 思路利用name,泄漏heap的基址,得到top chunk addrdef inti(name,org,host):

2021-05-30 22:15:21 205

原创 how2heap_house_of_einherjar

house of einherjar1. 利用原理两个物理相邻的 chunk 会共享 prev_size字段,尤其是当低地址的 chunk 处于使用状态时,高地址的 chunk 的该字段便可以被低地址的 chunk 使用。因此,我们有希望可以通过写低地址 chunk 覆盖高地址 chunk 的 prev_size 字段。一个 chunk PREV_INUSE 位标记了其物理相邻的低地址 chunk 的使用状态,而且该位是和 prev_size 物理相邻的。后向合并时,新的 chunk 的

2021-05-30 09:43:09 156

原创 Mit6.828(一、实验环境准备)

Mit6.828(一、实验环境准备)a. 确保编译环境测试代码,确保相应的命令能够执行,不行的话,安装相应的包objdump -igcc -m32 -print-libgcc-file-name安装下列工具sudo apt-get install -y build-essential gdbsudo apt-get install gcc-multilib编译qemu需要的依赖sudo apt-get install libsdl1.2-dev libtool-bin li

2021-05-28 15:44:18 456

原创 [house of einherjar] tinypad

[house of einherjar] tinypad1. Ida 分析程序直接显示chunk中的内容,相当于show了delete存在uafedit函数,tinypad缓冲区读入数据add函数,只能申请4个chunk,使用read_until读入read_until存在off by null2. 思路条件总结,存在可编辑的数组,存在off by null,chunk中的数据没法轻易的修改(strcpy \x00截断了),可以使用house of ein

2021-05-27 14:12:37 140

原创 glibc中free函数详解

__libc_free详解(tcache 略)1. 检查是否存在 hook函数,如果有就执行void__libc_free (void *mem){ mstate ar_ptr; mchunkptr p; /* chunk corresponding to mem *//* 1. 关于__free_hook,释放时会检查其会否为NULL,否的话就执行相应的函数 2. __free_hook指向的函数,其调用的参数,为chunk中的内容

2021-05-27 09:51:38 863

原创 [fast_bin_consoli + unlink]sleepyHolder_hitcon_2016

[fast_bin_consoli + unlink]sleepyHolder_hitcon_20161. ida分析add函数delete函数unlink 需要控制的全局指针的位置2. 思路先申请两个small和big chunk,释放small chunk,申请huge chunk,触发consolidate,再次释放small chunk,触发double free申请small chunk,同时构造fake chunk,释放big chunk,触发unlin

2021-05-25 22:48:27 87

mysql connect jar

数据库连接时用到的jar包,只适用于5.6版本以前的MySQL版本,最新版本不适用

2018-11-14

空空如也

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

TA关注的人

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