自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

个人笔记

个人技术博客,随手记录,分享经验

  • 博客(100)
  • 收藏
  • 关注

原创 从Github登录的双因子验证到基于时间戳的一次性密码:2FA、OTP与TOTP

Github于2023-03-09推出一项提高软件安全标准的措施,所有在Github上贡献过代码的开发人员在年底前必须完成 2FA(Two-factory authentication,双因子认证)。Github并不支持邮箱以及国内手机号的短信验证码二次验证,这无疑给我们登录Github增加了难度。

2023-11-22 19:17:23 2044

原创 CVE-2021-3493:Overlay 文件系统 Ubuntu 本地提权漏洞分析

由于笔者已分析过 CVE-2023-0386,在此基础上,分析 CVE-2021-3493 可能更为简单。CVE-2023-0386 需要理解OverlayFS、Linux 命名空间、SetUID 位的概念;除此之外,如果你想理解 CVE-2021-3493,还需要了解Capability、Linux 文件扩展属性。当你理解了这些常见的概念之后,在手动复现这些漏洞,会有更加深刻的理解,并且可以提高对 Linux 本地提权漏洞的认知。

2023-07-02 23:32:54 1470

原创 CVE-2023-0386:Overlay 文件系统 copy-up 本地提权漏洞分析

SUID 、文件系统挂载都是我们常见的提权方式,复现 CVE-2023-0386 可以让我们更好的认识 Linux 本地提权的途径,更好的了解 Linux 安全特性。再回到漏洞本身, 总结一下 CVE-2023-0386 利用的流程:① 创建 FUSE 文件系统,libfuse 允许我们以普通权限修改文件系统内任意文件属性,但是此文件系统被挂载为nosuid

2023-06-16 23:04:06 2321

原创 利用格式化字符串漏洞实现任意地址读写

理解格式化字符串漏洞关键还是在于理解栈空间布局,任意地址写初学者接触到可能较为抽象,但是结合栈空间布局以及格式化字符串的原理,详细我们就能对格式化字符串有个更加清晰的认知。如果能够复现上述漏洞案例,那么恭喜你,已经完成了 pwn 格式化字符串漏洞这一旅程。

2023-06-01 21:45:19 3070

原创 安全测试常用 ADB 命令

ADB 是 Android 提供的原生工具,其实是一个功能强大的工具集,包含各个子二进制,分布在 Android 文件系统的各个位置。普通开发既可以利用 ADB 进行常规调试和测试,渗透人员也可以利用 ADB 进行安全测试。了解常用的 ADB 命令是 Android 安全测试必不可少的基本技能。我们在这里只是阐述安全相关的一些测试命令,如果想了解更多,可以参考文章开头提到的官方和三方手册。

2023-05-28 17:36:00 2002

原创 正向代理、反向代理以及透明代理与隐私保护

总体而言,万物互联的时代,企业有能力监控员工访问互联网留下的每一处痕迹,但是在比以往任何时候都注重个人隐私的今天,再加上代理解密 SSL 会消耗巨大资源,实际很多公司只会根据风控策略选择解密部分敏感数据。除了加强内部合规风险审查之外,另一方面,政府、企业更多的是需要考虑如何保护个人数据不被滥用,不被泄露,增强他们在民众间的公信力。

2023-04-04 21:54:52 2339 1

原创 基于经典蓝牙 RFCOMM 的私有协议 Fuzzing

应用开发者可基于 BLE 提供的ATT/GATT协议,开发自己的私有协议。就像我们可以基于 TCP 创建 HTTP 协议一样。同样道理,对于经典蓝牙,我们在上一篇文章说过低功耗蓝牙应用层协议的测试方法。本次就来聊聊经典蓝牙(BR,Basic Rate)一些私有协议的测试方法。

2023-03-31 20:08:30 1811

原创 解读 CVSS 通用评分系统中最具争议的 Scope

CVSS, Common Vulnerability Scoring System, 即通用漏洞评分系统,简言之就是一个对安全漏洞进行打分的标准。网络安全人员按照 CVSS 评分的维度对漏洞打分,截至到今天,CVSS 已经升级到 3.1 版本。实际上 CVSS 评分还有一些令人模糊的灰色地带,尤其是最具争议的 Scope,本次就在这里解读一下关于 Scope,到底该不该 Changed。

2023-03-28 21:58:49 3031

原创 快速掌握任意 Android 应用的抓包

撰写本文最大目的在于,快速掌握任意 Android 应用的抓包,因为现实场景中,往往会遇到常规方法无法抓包的问题。而只需要通过 `iptables` 即可解决绝大多数问题。

2023-02-02 19:10:48 5653

原创 修改嵌入式 ARM Linux 内核映像中的文件系统

本文将演示如何在 32位 ARM zImage 中替换 piggy 中的文件系统,我们以 openWRT 的某个版本固件为例进行讲解。

2022-12-21 20:51:44 2149

原创 QEMU软件虚拟化-TCG源码分析

早在 QEMU 0.10.0 时代,TCG(Tiny Code Generator) 就已成为 QEMU 的翻译引擎。TCG 起源于 C 编译器后端,后来被简化为 QEMU 的动态代码生成器。实际上,TCG 和一个真实的编译器后端一样,负责分析、优化已经生成 Host 代码。

2022-04-04 23:00:19 4937 3

原创 Linux 文件属性及特殊权限详解

本篇博客不仅会介绍一些常用的属性,还会引申介绍一些容易被忽略的特殊权限。

2022-02-08 21:35:22 6095

原创 符号执行入门

近些年符号执行因为其具有生成高覆盖率的测试用例和在复杂程序中发现更深层次的错误的能力,而再次受到关注。本篇博客简单探讨符号执行的入门知识,力求用最精简的语言告诉初学者什么是符号执行。

2021-12-26 16:57:43 3816

原创 使用 Python 模块 bluepy 玩转 BLE

简介Houdini是由intel开发的一个闭源arm指令翻译引擎,其目的是为了在x86平台上运行Android App。外界关于houdini的公开资料几乎为0,intel官方也鲜有提及。唯一一个公开研究是Black Hat USA 2021上的一个议题(Sleight of ARM: Demystifying Intel Houdini),但其分析粒度仍然较粗,并且也存在一些错误。笔者从完全黑盒的角度,对houdini进行了逆向,同时也发现了一些新的安全问题,本次将披露houdini底层的指令翻译细节,

2021-09-27 21:51:35 9102 7

原创 Linux 二进制漏洞挖掘入门系列之(七)堆溢出: House of Spirit

0x10 基础知识关于 bin 的一些特点malloc 返回值,指向 chunk 的 user data每个 bin 采取 LIFO 策略,最近被释放的 chunk 优先被再次使用关于 fastbin 的一些特点案例int main(void){ void *chunk1,*chunk2,*chunk3; chunk1=malloc(0x30); chunk2=malloc(0x30); chunk3=malloc(0x30); //进行释放

2021-07-08 22:19:50 1424 1

原创 Reverse Widget: 实现多种密码学算法、编解码、哈希以及多架构汇编和反汇编引擎的轻量级可视化工具

Reverse WidgetReverse Wigdet 是一个完全使用 Python 实现的加解密、编解码、哈希以及支持多种架构的汇编和反汇编引擎可视化工具。具有如下特性多个分组加密和解密算法:AES, DES, 3DES, RC2编码和解码:URL, Base64多个哈希算法:MD5, SHA1, SHA224, SHA256, SHA384, SHA512多种架构的汇编和反汇编器:x86, ARM, mips, Sparc, PowerPC已有一些在线网站实现了加解密、编解码以及哈希,

2021-07-06 22:29:11 1166

原创 使用 TFTP 服务传输文件

很多嵌入式设备只有tftp服务,因此需要在本地主机上安装tftp服务器,方便传输文件和调试。

2021-06-19 19:52:46 1252 2

原创 adb 导入 burp 证书

有时候,我们的 Android 系统可能存在于某些 IoT 设备中,亦或者系统本身裁剪了用户导入证书的功能,这个时候,我们怎么导入 burp 的证书,并且抓包呢?0x10 导出 burp 证书并进行处理Burpsuite 导出证书方法一:直接在浏览器中输入 http://burp,下载证书方法二:在 Burpsuite 中直接导出证书将 der 格式的证书转为 pem 证书openssl x509 -inform der -in cacert.der -out burp.pem 生成 p

2021-06-19 19:46:20 2623

原创 Glib 主事件循环轻度分析与编程应用

三个案例轻松搞定 glib 主事件循环

2021-05-17 22:13:41 2564 2

原创 逆向工程中不得不说的优秀开源引擎框架: Capstone, Keystone, Unicorn, Qemu 以及 QiLing 等工具

最近在研究一些用于进行逆向工程的框架:Chain of Fundamental Engines for Reverse Engineering: Capstone, Keystone, Unicorn, Qemu, Qiling。这些工具在某些场合中能够很好的帮助我们进行逆向工作。汇编与反汇编Capstone新加坡南洋理工大学团队在 Blackhat USA 2014 上发布的一个反汇编引擎Capstone 反汇编引擎 官网项目主页:https://github.com/aquynh/cap

2021-05-09 10:06:46 5020 4

原创 固件中的单个二进制模拟:Tenda AC15 路由器 CVE-2018-5767 / CVE-2020-10987 漏洞分析与复现

对于传统路由器,单个二进制依赖程度不高,往往能够独立运行,在这种情况下,我们是有可能直接使用 `qemu` 将一些核心业务拉起来。本文就是利用这种方法,搭建了漏洞复现环境。在分析漏洞时,结合代码类比技术,利用开源代码,对二进制进行修复,这样能够让我们更加清楚整个漏洞形成的原因。

2021-02-26 23:59:05 4170 5

原创 使用 qemu 模拟和调试不同架构的二进制程序

笔者之前也写过 qemu 类似的博客,但是发现以前对 qemu 理解并不深刻,并且有些方法已经过时,在此重新更新一版,并且覆盖了使用 qemu 的各种场景。我们的目的只有一个,模拟固件中的单个二进制程序。本篇博客会讲述各种场景下,使用 qemu 来运行和调试二进制程序,涵盖了 qemu 所有主流的用法。

2021-01-27 21:47:55 4971 4

原创 Frida Hook Android App 进阶用法之 Java 运行时

FridaHookAndroidFrida-Android 进阶frida 版本:12.11.18系统:Ubuntu 20.04 LTS0x10 官方 API0x11 Java 运行时官方API地址: https://www.frida.re/docs/javascript-api/#java ,这里给出几个常用的 APIJava.perform(fn)确保当前线程被附加到 VM 上,并且调用fn函数。此函数在内部调用 VM::AttachCurrentThread,然后执行 fn 回调函

2020-12-31 19:48:33 7938 4

原创 浅析程序的装载和运行

本次只是个人在分析maps虚拟空间时,发现可执行文件总是会分几个区映射,进而产生了疑问:一个二进制程序,到底是哪些部分会映射到内存中?《程序员的自我修养》早就告诉我们答案了,但是之前理解的还是很肤浅,看书只能让人有个大概的印象,很多东西只有亲自实践才能体会到背后的原理。

2020-11-28 21:51:45 977

原创 固件逆向中常用的小工具

本文主要介绍 IoT 固件逆向中,常用的一些小工具,对于黑盒分析固件十分有用。

2020-11-05 22:28:42 2161

转载 objection - 基于frida的命令行hook工具食用手册

0x1 介绍&安装Objectionobjection是基于frida的命令行hook工具, 可以让你不写代码, 敲几句命令就可以对java函数的高颗粒度hook, 还支持RPC调用目前只支持Java层的hook, 但是objection有提供插件接口, 可以自己写frida脚本去定义接口比如葫芦娃大佬的脱壳插件, 实名推荐: FRIDA-DEXDump官方仓库: objection安装条件1. python版本 > 3.42. pip版本 > 9.0安装命令pip3

2020-10-10 19:57:30 18021

原创 CSAW 2020 Quals: 栈溢出与 ROP

题目:roppity类型:pwn、栈溢出、rop、got 覆写

2020-09-14 22:32:29 477

原创 ASIS CTF 2020_full_protection: 格式化字符串与栈溢出的利用

本题主要利用了格式化字符串漏洞、栈溢出漏洞;其中有两点值得注意:第一、使用 gef 插件找到 canary,便于绕过栈保护;第二、strlen 函数对输入的长度进行了限制,其实是可以利用 \0 绕过。其余知识点都是 pwn 中常用的一些手段,比如改写 alarm,禁用反调试;ROP 构造等。

2020-09-10 22:28:01 1309 2

原创 AFL 源码分析

AFL 作为 C/C++ 白盒 fuzzer 的鼻祖,为后来许多优秀的 fuzzer 提供了技术支持,衍生了很多 fuzzer 工具,本文只是站在巨人的肩膀上,参考了大量的博客,重新审计了部分源码,很多细节并没有深究,但对理解 AFL 的思想还是有一定作用的。

2020-09-02 22:16:45 4366 3

原创 Linux 二进制漏洞挖掘入门系列之(六)堆块中的 unlink

当我们在使用 free() 函数的时候,就是释放一块内存,这是宏观上的表现。深究起来,堆管理器(ptmalloc)会检查其物理相邻的堆块(chunk)是否空闲,如果空闲,则需要将其从所在的 bin (small bins)中释放出来,与当前 free 的 chunk 进行合并,合并之后,再插入到 unsorted bins 中。在这个过程中,**unlink 就是释放空闲堆块**。这个过程中,如果我们可以构造物理相邻的 chunk,那么就有可能造成**任意地址写**。

2020-08-03 21:34:06 898

原创 TSG CTF 2020:Beginner‘s Crypto 密码学中的数论基础——逆元

问题描述Suffix suffices, right?Hint for beginners: Can you see the two assert functions in the attached python script? These are describing the preconditions to be met. These statements read the secret content of the file named flag.txt and check if they ar

2020-07-22 20:05:17 1765

原创 Linux 环境下安装和使用 gmpy2

GMP(全称是GNU Multiple Precision Arithmetic Library,即GNU高精度算术运算库),是一个开源的**高精度运算库**,其中不但有普通的整数、实数、浮点数的高精度运算,还有随机数生成,尤其是提供了非常完备的数论中的运算接口,比如Miller-Rabin素数测试算法、大素数生成、欧几里德算法、求域中元素的逆、Jacobi符号、legendre符号等。**gmpy2 是 Python 的一个扩展库,是对 GMP 的封装**,它的前身是 gmpy。

2020-07-22 19:59:43 2496

原创 Ubuntu 16.04.6 安装 pwntools

为什么要在老版本的 Ubuntu 上使用 pwntools 呢?因为在新版系统上,使用的往往是版本较高的 libc.so,其堆的一些特性已经发生变化,在 CTF 比赛中,有可能无法复现某些漏洞的利用方法。而在 Ubuntu 中直接安装 pwntools,可能会出现各种问题。

2020-07-11 16:36:11 3325 2

原创 使用 firmware-analysis-plus 一键模拟固件

`Firmadyne` 是一个自动化和可扩展的系统,用于对基于 Linux 的嵌入式固件执行仿真和动态分析。详细说明见:[基于Firmadyne的固件模拟环境搭建](https://blog.csdn.net/song_lee/article/details/104393933)。奈何该工具实际配置较为复杂,后来 attify 制作了开源工具 `firmware-analysis-toolkit` 整合相关流程,进一步降低了该工具的使用难度。

2020-06-14 20:58:09 3925 20

原创 pwnable 题目解析:[Toddler‘s Bottle]-asm 使用 pwntools 生成基本的 shellcode

本题的目标就是让我们学会使用 pwntools 的 shellcraft 模块,生成相应架构的 shellcode。

2020-06-14 20:51:15 1583

原创 memcpy 引出的 chunk size 计算与内存对齐

在堆分配中,最为常见的 malloc(x) 是如何按照指定的内存对齐方式进行内存分配?而实际分配的空间大小与 x 又有什么样的关系?这是本次要讲的重点内容。同时,如何实现纳秒级的 CPU 周期计算?这就涉及到特定 CPU 平台的相关指令了。整个过程会给出一个使用 SSE 指令集加快 memcpy 拷贝速度的实际案例,结合实例,能够得到更好的理解。

2020-06-02 23:18:59 1999

原创 通过gdb移植搭建arm单板交叉调试环境

对于嵌入式开发来说,嵌入式开发板经常需要使用 gdb 进行源码级调试,或者对于安全测试人员来说,也需要使用 gdb 进行二进制程序的调试。gdb 交叉调试提供了这样的环境,可以在目标单板上启动 gdbserver 进程,本地主机使用 gdb 作为客户端连接。为了更好的调试程序,远程单板和本地主机的 gdb 最好统一版本。这里使用源码编译的方式,编译出客户端程序 arm-linux-gdb 和服务端程序 gdbserver。常见的配置选项有以下几种--host:指定了编译后的程序需要在哪里运行--ta

2020-05-29 21:54:40 1562 1

原创 沧海桑田:Linux 系统启动的演进模型与发展变化

Linux 系统启动过程在不断演进和变化,从最初的 SysV init,到如今的 Systemd 初始化进程,Linux 早已发生了翻天覆地的变化。旧时的 SysV init 启动方式已逐渐退出历史舞台,Upstart 也曾大行其道,作为后起之秀的 Systemd 发展迅速,并在 2020 年成为 Linux 启动的主流 init。

2020-05-12 22:05:24 682

原创 initramfs 在内核中的作用与实现

initramfs 作为根文件系统一个重要补充,在特定条件下弥补了内核启动时,没有用户态的缺陷。很多 Linux 发行版都使用了 initramfs,当然也有一些并没有使用,该 ram 文件系统并非必须,但在很多场景下又不可或缺。例如 Kali Linux 系统,就使用了 initramfs。本文首先讲述了 initramfs 的由来和工作过程,然后举了一个实际的例子,以将抽象的过程具体化,最后使用 qemu 启动了我们制作的 initramfs,相信通过此文,你一定能够对 initramfs 有一个更加清

2020-05-10 12:38:51 14927 5

原创 子域名收集原理与子域名爆破工具

子域名收集是渗透测试中,前期信息收集必不可少的一个阶段。域名是一个站点的入口,如果一个站点难以渗透,可以尝试从它的子域名或者同一台服务器上的另外一个站点作为突破口,从而进行较为隐秘的渗透测试。

2020-04-28 22:05:23 14402 5

空空如也

空空如也

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

TA关注的人

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