分析过程 观察栈结构 这题的关键(对我来说)就是利用栈上残留的数据。平时练的不多,没有这个习惯,导致泄露和格式化字符串利用都遇上了麻烦。 vuln函数里的栈结构如下: 00:0000│ rsp 0x7fffffffdfe0 ◂— 0x0 ... ↓ 2 skipped 03:0018│ 0x7fffffffdff8 —▸ 0x7ffff7fb55c…
背景 glibc里面有很多未导出的符号,比如一些数据变量、内部函数等等。漏洞利用时有时需要对这些符号进行定位,由于这些符号与libc偏移固定,一般的方式是通过gdb算出这些偏移。但这种方式的弊端在于不能可靠地解析不同glibc下的符号偏移,每次切换不同的libc都需要重新定位。 本文以exit hook中的__libc_atexit为例介绍一种基于…
最近学习exit hook,网上师傅分析exit hook时都一带而过,没有具体分析细节,所以这里通过看源码给大家详细分析一下几种exit hook: __libc_atexit _rtld_global _dl_rtld_lock_recursive _dl_rtld_unlock_recursive 我用的是2.31的libc源码,本文涉及源码…
安全策略 先用checksec检查安全策略 Arch: amd64-64-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x400000) 运行程序 跑起来没有提示,直接下一步看看吧。 静态分析 IDA打开反编译,主函数实现了一个比较常见的菜单…
安全措施 [*] '/mnt/e/Security/pwn/heap/unlink/examples/zctf2016_note2/note2' Arch: amd64-64-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0…
前言 Win10 WSL2 用 pwntools 进行gdb.attach()时默认打开竟然是 cmd,不仅界面丑不说,还有很多字符显示有问题...... 我记得用win11的时候一直是用 Windows Terminal 打开的啊..... 然而,网上逛了一圈,好像没找到这个教程?什么!我又看了眼丑陋的 CMD 和显示成方框的箭头......这我…
利用条件 存在两个相邻堆块 能控制前一堆块数据部分 能控制后一堆块header部分 有可写指针指向前一堆块数据段地址,能获取该指针地址 利用原理 堆块 free 时,如果相邻前一堆块处于空闲状态,会尝试进行后向合并的操作,将两堆块合并成一个堆块。其中由于空闲堆块原本在双向链表中管理,因此会触发 unlink 对其进行脱链,即从双向链表中取出。 关于…
安全策略 先用checksec检查安全策略 Arch: amd64-64-little RELRO: Full RELRO Stack: No canary found NX: NX enabled PIE: PIE enabled 运行程序 大概运行一下程序,理清程序的执行流程,可以看到程序的功能是对图书的增删改查。 1. Create a bo…
背景 Pwnagotchi 通过 USB 插入 Windows 10 计算机时,它没有被识别为网络。 RPi0W连接电脑一般是通过 RNDIS——一个通过USB的以太网驱动程序,可以在Raspberry Pi和电脑之间实现虚拟以太网连接。 但是RNDIS在2020年因为某种原因被微软移除了,因此,在Win10(Win11同理)的最新版本中,默认是没…
先决条件 硬件 MicroSD卡 读卡器 软件 SD卡写入工具 balenaEtcher - 跨平台SD卡写入工具,支持ZIP Raspberry Pi Imager Win32DiskImager 系统镜像文件 步骤 Step-1 MicroSD卡插入读卡器并插入电脑 Step-2 打开SD卡写入工具 使用balenaEtcher 打开balen…