自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

有价值炮灰

This is evilpan speaking

  • 博客(98)
  • 资源 (1)
  • 收藏
  • 关注

原创 初探 Struts2 框架安全

最近分析 confluence 的漏洞,发现是基于 Struts 框架的,其中有很多相关知识点并不了解,因此专门来学习一下 Struts 2

2023-11-02 08:00:00 159

原创 Fuzzing 在 Java 漏洞挖掘中的应用

对于 Java 这样的内存安全编程语言也是可以 fuzz 的,只不过目的是找出逻辑漏洞而不是内存破坏

2023-09-11 07:00:00 305

原创 URL 解析与鉴权中的陷阱 —— Spring 篇

相比于传统的 JavaEE Web 应用,Spring 基于全匹配的 DispatcherServlet 实现了一套应用层的路由方案,并且在依赖注入的加持下使得业务开发和配置变得更加方便。这一套路由方案屏蔽了底层 Servlet 容器的解析差异,但同时也引入了 Spring 特有的解析陷阱。

2023-09-10 14:00:00 304

原创 浅谈 URL 解析与鉴权中的陷阱

说到 URL 解析,想必关注 Web 安全的朋友们都看过 Orange 那篇,其中对不同语言中的 URL Parser 做了较为详尽的分析。该议题主要关注不同 Parser 处理 URL 时的域名部分,以实现针对 SSRF 的绕过和后利用。本文的关注点则有所不同,主要是针对 URL 解析的路径部分。因为 URL 的路径部分通常涉及到资源和服务的路由,以及对应的鉴权校验。通常我们在漏洞挖掘和渗透测试时都收集过一些鉴权绕过的 “Tricks”,但很多时候并不了解其所以然,每每测试结束后总觉得缺少了些什么。

2023-07-31 08:30:00 358

原创 针对二维码解析库的 Fuzzing 测试

在四月份的时候出了那么一个新闻,说微信有一个点击图片就崩溃的 bug,当时各大微信群里都在传播导致手机各种闪退。

2023-06-12 08:00:00 228

原创 Spring {Boot,Data,Security} 历史漏洞研究

前言上篇文章 介绍了 Spring Framework 本身的一些核心技术点以及历史上出现过的几个典型漏洞,在其末尾我们说了,Spring 生态中除了框架本身,还有许多其他流行的项目。这些项目的文档和源码见:spring.io/projectsgithub.com/spring-projects本文即对其中几个比较知名的项目进行介绍,同时也会对历史上出现过的漏洞进行分析和回顾。Spring BootSpring Boot 是 Spring 的核心子项目,主要目的是为了简化新建 Spring

2023-05-01 12:38:11 240

原创 Spring Framework 历史漏洞研究

本文的主要目标是分析、总结、归纳历史上出现过的 Spring 框架漏洞,从而尝试找出其中的潜在模式,以达到温故知新的目的。当然作为一个 Java 新手,在直接分析漏洞之前,还是会先从开发者的角度去学习 Spring 中的一些核心概念,从而为后续的理解奠定基础。

2023-04-23 08:00:00 532

原创 Java 安全研究初探

Java 安全,通常指代的是 Java Web 安全。在刚开始学习的一段时间里,面对众多的框架和名词,比如 Spring、Weblogic、EJB、AKB,等等,总感觉狗啃泰山无从下嘴。于是就有了这篇文章,旨在记录学习过程中遇到的所有问题,希望也能对像我一样的初学者有所帮助。

2023-04-03 07:30:00 236

原创 命令行版 ChatGPT,支持代码高亮,流式输出

ChatGPT 的命令行模式。

2023-03-04 16:08:47 3035

原创 Android 反序列化漏洞攻防史话

Java 在历史上出现过许多反序列化的漏洞,但大部分出自 J2EE 的组件。即便是 FastJSON 这种漏洞,似乎也很少看到在 Android 中被实际的触发和利用。本文即为对历史上曾出现过的 Android Java 反序列化漏洞的分析和研究记录。

2023-02-20 07:30:00 1361

原创 iptables 在 Android 抓包中的妙用

本文主要介绍了 iptables 规则的配置方法,并且实现了一种在 Android 中全局 HTTP(S) 抓包的方案,同时借助owner拓展实现应用维度的进一步过滤,从而避免手机中其他应用的干扰。相比于传统的 HTTP 代理抓包方案,该方法的优势是可以实现全局抓包,应用无法通过禁用代理等方法绕过;

2023-01-31 23:30:00 904

原创 Android 组件逻辑漏洞漫谈

随着社会越来越重视安全性,各种防御性编程或者漏洞缓解措施逐渐被加到了操作系统中,比如代码签名、指针签名、地址随机化、隔离堆等等,许多常见的内存破坏漏洞在这些缓解措施之下往往很难进行稳定的利用。因此,攻击者们的目光也逐渐更多地投入到逻辑漏洞上。逻辑漏洞通常具有很好的稳定性,不用受到风水的影响;但同时也隐藏得较深、混迹在大量业务代码中难以发现。而且由于形式各异,不太具有通用性,从投入产出比的角度来看可能不是一个高优先级的研究方向。但无论如何,这都始终是一个值得关注的攻击面。

2022-11-14 08:00:00 789

原创 IDA 中的大规模路径搜索方法

本文主要解决的是这么一个问题: 在 IDA 中如何查找两个函数之间的调用路径?不过,这样就行了吗?

2022-11-09 08:00:00 471

原创 IO_FILE 与高版本 glibc 中的漏洞利用技巧

在日常的二进制漏洞利用过程中,最终在获取到任意地址读写之都会面临一个问题: 要从哪里读,写到哪里去。对于信息泄露有很多方法,比如寻找一些数据结构在内存中残留的地址,可以是内部结构,也可以是用户定义的结构;相比而言,内存写原语的使用场景就相对有限了。因为在当今的系统安全纵深防护之下,代码和数据已经呈现了严格分离的趋势,可读可写可执行的历史遗留问题会逐渐退出历史舞台。更多的利用方法是关注代码重用(ROP)、可修改的函数指针、面向对象引入的多态调用等等。

2022-11-08 08:00:00 606

原创 IDA 中的大规模路径搜索方法

本文主要是记录和分享了一种在 IDA 中通过非递归去实现的路径搜索算法,其算法核心是将递归的搜索替换为栈+循环的方式,可以应用在大规模的程序中避免递归内存耗尽。另外通过修改 `get_neighbors` 方法也可以方便地拓展到 Ghidra 或者 BinaryNinja 中。其实这也不算什么很新颖的东西,不过能将算法应用到自己写的脚本中感觉还是很奇妙的。

2022-11-07 08:00:00 518

原创 ptmalloc cheatsheet

几年前已经写过了一篇 ptmalloc与glibc堆漏洞利用,但是一来当时学习仓促,很多内容自己也只是一知半解;二来已经时过境迁,当时的glibc距今也更新了不少,而且当时理解的内容太久没有复习又全部还给老师了。因此,本文又重新将其整理一遍,当然不再介绍基础概念,只记录重点以备考试时快速查阅。...

2022-07-17 21:02:39 831

原创 终端应用安全之网络流量分析

前言在日常对客户端应用进行安全审计或者漏洞挖掘的时候,或多或少都会涉及到网络协议的分析。而对于业务风控安全而言,APP 的网络请求往往也代表着终端安全防御水平的上限,因为客户端是掌控在攻击者手中的,服务端的业务逻辑才是安全的核心兜底保障。本文是笔者在分析众多 Android 应用协议的过程中所尝试总结的一些经验,大部分情况下也可以适用于其他平台的终端应用,如 iOS、macOS、Windows 等,尽管各个操作系统中会存在一些特有的小技巧。网络流量分析在介绍具体的流量分析方法之前,我们需要先明确流量

2022-05-22 17:00:00 2014

原创 深入浅出 SSL/TLS 协议

有没有那么一个人,几乎每天都在你身边,但某天发生一些事情后你会突然发现,自己完全不了解对方。对于笔者而言,这个人就是 TLS,虽然每天都会用到,却并不十分清楚其中的猫腻。因此在碰壁多次后,终于决定认真学习一下 TLS,同时还是奉行 Learning by Teaching 的原则,因此也就有了这篇稍显啰嗦的文章。前言关于 SSL/TLS 和 HTTPS 这些基本概念也就不多废话了,相信看笔者文章的朋友都有一定基础,因此本文的重点主要放在其中的握手流程。下文分别以目前最为常用的 TLS1.2 和 TLS

2022-05-15 20:01:59 2477

原创 Frida Internal - Part 3: Java Bridge 与 ART hook

前面的文章中介绍了 frida 的基础组件 frida-core,用于实现进程注入、通信和管理等功能。加上 frida-gum 和 gum-js 的核心能力,我们已经可以很方便地使用 JavaScript 脚本来进行代码劫持、动态跟踪等进程分析操作。不过 frida 并不满足于此,而是又实现了针对高级语言的支持,比如 Java、Objective-C、Swift 等。这些额外支持实际上是在 gum-js 的基础上针对对应高级语言的 Runtime 进行 hack 而实现的,统一称为对应语言的 bridge

2022-04-30 14:19:24 940

原创 Frida Internal - Part 2: 核心组件 frida-core

前文已经介绍了 frida 中的核心组件 frida-gum 以及对应的 js 接口 gum-js,但仅有这些基础功能并不能让 frida 成为如此受欢迎的 Instrumentation (hook) 框架。为了实现一个完善框架或者说工具,需要实现许多系统层的功能。比如进程注入、进程间通信、会话管理、脚本生命周期管理等功能,屏蔽部分底层的实现细节并给最终用户提供开箱即用的操作接口。而这一切的实现都在 frida-core 之中,正如名字所言,这其中包含了 frida 相关的大部分关键模块和组件,比如 fr

2022-04-30 14:18:24 3842

原创 Frida Internal - Part 1: 架构、Gum 与 V8

frida 是一个非常优秀的开源项目,因为项目活跃,代码整洁,接口清晰,加上用灵活的脚本语言(JS)来实现指令级代码追踪的能力,为广大的安全研究人员所喜爱。虽然使用人群广泛,但对其内部实现的介绍却相对较少,因此笔者就越俎代庖,替作者写写 frida 内部实现介绍,同时也作为自己的阅读理解记录。系列文章传送门:Frida Internal - Part 1: 架构、Gum 与 V8 (本文)Frida Internal - Part 2: frida-coreFrida Internal - Pa

2022-04-30 14:17:11 1483

原创 代码安全审计之道

代码审计是每个安全研究员都应该掌握的技能。但是网上对于代码审计的介绍文章却比较匮乏。因此本文一方面作为 *The Art of Software Security Assessment* 一书的阅读笔记,另一方面也结合自己日常工作的经验总结,希望能国内的安全研究员有个抛砖引玉的帮助。

2022-01-24 08:00:00 1014

原创 Linux 内核监控在 Android 攻防中的应用

在日常分析外部软件时,遇到的反调试/反注入防护已经越来越多,之前使用的基于 frida 的轻量级沙盒已经无法满足这类攻防水位的需要,因此需要有一种更加深入且通用的方式来对 APP 进行全面的监测和绕过。本文即为对这类方案的一些探索和实践。背景为了实现对安卓 APP 的全面监控,需要知道目标应用访问/打开了哪些文件,执行了哪些操作,并且可以修改控制这些操作的返回结果。一个直观的想法是通过 libc 作为统一收口来对应用行为进行收集,比如接管 open/openat/faccess/fstatat 实现文件

2022-01-05 09:00:00 1228

原创 ART 在 Android 安全攻防中的应用

在日常的 Android 应用安全分析中,经常会遇到一些对抗,比如目标应用加壳、混淆、加固,需要进行脱壳还原;又或者会有针对常用注入工具的检测,比如 frida、Xposed 等,这时候也会想知道这些工具的核心原理以及是否自己可以实现。其实这些问题的答案就在 Android 的 Java 虚拟机实现中。可以是早期的 Dalvik 虚拟机,也可以是最新的 ART 虚拟机。从时代潮流来看,本文主要专注于 ART。不过,为了铭记历史,也会对 Dalvik 虚拟机做一个简单的介绍。

2021-12-27 07:00:00 766

原创 JNDI 注入漏洞的前世今生

前两天的 log4j 漏洞引起了安全圈的震动,虽然是二进制选手,但为了融入大家的过年氛围,还是决定打破舒适圈来研究一下 JNDI 注入漏洞。JNDI 101首先第一个问题,什么是 JNDI,它的作用是什么?根据官方文档,JNDI 全称为 Java Naming and Directory Interface,即 Java 名称与目录接口。虽然有点抽象,但我们至少知道它是一个接口;下一个问题是,Naming 和 Directory 是什么意思?很多相关资料都对其语焉不详,但其实官方对其有详细解释。N

2021-12-14 20:13:13 3571

原创 Android12 应用启动流程分析

Android 12 (S) 的应用启动全流程分析。

2021-12-06 19:53:30 1677

原创 Reverse Shell 杂谈

昨天有个小伙伴在群里问在 macOS 下如何实现 bash 反弹 shell,因为 Mac 中没有 `/dev/tcp` 目录。借着这个问题,就来简单谈谈反弹 shell 的那些事。

2021-12-06 19:05:14 1212

原创 虚假的 RCE vs 真实的 RCE

吐槽一下最近 外网的 macOS Finder RCE

2021-09-23 21:20:15 168

原创 Android 蓝牙源码学习笔记

上文介绍了蓝牙基本原理,但实现部分介绍不多,本文以 Android 中的蓝牙协议栈为例学习在实际系统中蓝牙的工程实现。

2021-07-11 14:09:52 2359 4

原创 蓝牙安全与攻击案例分析

本文是 2020 年中旬对于蓝牙技术栈安全研究的笔记,主要针对传统蓝牙和低功耗蓝牙在协议层和软件安全性上攻击面分析,并介绍了一些影响较大的蓝牙漏洞原理,比如协议层的 KNOB、BIAS 漏洞,软件实现上的 BlueBorne、SweynTooth 以及 BlueFrag 漏洞等。

2021-07-11 12:47:42 2687

原创 从微信扔骰子看iOS应用安全与逆向分析

以微信扔骰子小游戏为例,记录一次完整 iOS 逆向分析的过程。

2021-04-11 14:28:09 1157

原创 树莓派无界面初始化

时不时地会用到树莓派,但是每次都忘了怎么配置,因此单独记录一篇方便以后查询。

2021-01-30 14:00:51 444

原创 USB 协议核心概念与实践

USB,全称是 Universal Serial Bus,即通用串行总线,既是一个针对电缆和连接器的工业标准,也指代其中使用的连接协议。本文不会过多介绍标准中的细节,而是从软件工程师的角度出发,介绍一些重要的基本概念,以及实际的主机和从机应用。最后作为实际案例,从 USB 协议实现的角度分析了checkm8漏洞的成因。USB 101首先要明确的一点,USB 协议是以主机为中心的 (Host Centric),也就是说只有主机端向设备端请求数据后,设备端才能向主机发送数据。从数据的角度来看,开发者最直接接

2021-01-24 17:02:54 1073 1

原创 赛博朋克的自我修养

2020年的安全研究小结

2020-12-27 17:17:13 238

原创 Android/Linux Root 的那些事儿

把权力关进笼子 —— George Walker Bush前言曾几何时,在Linux系统中获取了root权限就可以畅行无阻,但是那个时代已经一去不返了。本文就来总结下这些控制权限模块。参考链接...

2020-12-06 15:24:50 860

原创 用手机打 CTF 是什么样的体验

尝试不用电脑,只拿一台iPhone去参加看雪CTF2020 (娱乐向) 用手机打 CTF (iSH + radare2) 背景最近 iSH 在 Apple Store 上架了,之前一直抢不到 testflight 的配额,难得强管控的苹果会让这种 Terminal 类的应用发布,所以第一时间下载来玩玩。测试之后发现可以当做是一个简单的 Linux 虚拟机,至少常用的命令都没什么问题,正

2020-11-22 16:10:46 1812

原创 浅谈 Android 的安全启动和完整性保护

在 IoT 中保证设备安全性的重要一环就是保证代码的完整性,不让恶意代码影响业务的正常逻辑。一般而言是及时修复现有攻击面所面临的漏洞,比如浏览器、蓝牙、调试接口;另一方面需要确保的是即便恶意代码获取了执行权限,也无法修改系统镜像进行持久化。针对这点所构造的安全方案通常称为 Secure Boot,对于不同的厂商,实现上可能会引入不同的名字,比如 Verified Boot、High Assurance Boot 等等,但本质上都是类似的。Secure BootSecure Boot 顾名思义就是安全启

2020-11-21 09:46:48 4104

原创 Android 用户态启动流程分析

从硬件上电启动到终端软件可用是一个漫长而复杂的过程,我们在开心享受着丰富的应用程序时候,可能并没想到这其中所包含的工程师心血。

2020-11-08 15:57:40 1211

原创 Android HAL 与 HIDL 开发笔记

前言之前分析过 Android 系统中的进程间通信逆向,即基于 Binder 拓展的以及 AIDL 描述的 IPC。了解 Android 系统的话应该知道在 8.0 之后,/dev/binder 拓展多出了两个域,分别是 /dev/hwbinder 和 /dev/vndbinder 。其中 hwbinder 主要用于 HIDL 接口的通信,而 vndbinder 则是专注于 vendor 进程之间的 AIDL 通信。本文主要关注的是硬件部分。具体来说,就是作为一个 OEM/ODM 厂商,如何将自己的硬件

2020-11-01 13:40:48 2036

原创 如何分析一个Python虚拟机壳并拿走 10000 ETH

之前在群里看到有人发了一个挑战,号称将 5 ETH 的私钥放在了加密的代码中,只要有人能解密就可以取走,所以我又管不住自己这双手了。

2020-10-16 10:42:59 694 1

手机归属地数据库43万条 sqlite3 格式

sqlite> .tables phones regions sqlite> .schema phones CREATE TABLE phones ( id INTEGER NOT NULL, number INTEGER, type INTEGER, region_id INTEGER, PRIMARY KEY (id), FOREIGN KEY(region_id) REFERENCES regions (id) ); CREATE INDEX ix_phones_number ON phones (number); sqlite> .schema regions CREATE TABLE regions ( id INTEGER NOT NULL, province VARCHAR, city VARCHAR, zip_code VARCHAR, area_code VARCHAR, PRIMARY KEY (id) ); sqlite> SELECT * FROM phones LIMIT 10; 1|0|2|1 2|1300001|2|2 3|1300002|2|3 4|1300003|2|4 5|1300004|2|5 6|1300005|2|6 7|1300006|2|7 8|1300007|2|6 9|1300008|2|8 10|1300009|2|6 sqlite> SELECT * FROM regions LIMIT 10; 1|山东|济南|250000|0531 2|江苏|常州|213000|0519 3|安徽|合肥|230000|0551 4|四川|宜宾|644000|0831 5|四川|自贡|643000|0813 6|陕西|西安|710000|029 7|江苏|南京|210000|025 8|湖北|武汉|430000|027 9|北京|北京|100000|010 10|天津|天津|300000|022 2020年最新

2020-03-15

空空如也

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

TA关注的人

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