DIR-815 栈溢出漏洞(CNVD-2013-11625)复现
复现环境及所需工具漏洞复现环境Ubuntu 24.04.2 LTS 基础工具配置基础的Pwn环境 + binwalk + sasquatch + qemupwn环境配置推荐YX-hueimie师傅的博客★pwn 24.04环境搭建保姆级教程★_ubuntu24 pwn-CSDN博客★pwn 22.04环境搭建保姆级教程★_pwn环境搭建-CSDN博客 安装binwalk可以直接使用apt安装,也可以下载binwalk的源码来自己编译 1sudo apt install binwalk sasquatch 是binwalk用于解压非标准SquashFS文件系统的关键依赖(入门不安装这个那么我们之后binwalk分解固件会发现里面 squashfs-root 文件夹是空的)安装方法如下: 123456# 安装依赖库(关键步骤,否则编译会失败) sudo apt-get install build-essential zlib1g-dev liblzma-dev liblzo2-dev # 克隆仓库并编译 git clone...
2025 ISCC 擂台赛Pwn-wp(含附件)
前言相比练武赛,擂台赛的题目指令还是要高很多的,里面都是师傅们用心出的题目,感觉创新度还是有的,但是为什么那么多vm pwn??? 通过网盘分享的文件:2025ISCC擂台赛Pwn全部附件.rar链接: https://pan.baidu.com/s/1y_zdFltMZmCxfxalS9EuCw?pwd=xidp 提取码: xidp 解出能力有限,很多方法可能并不是最优解,如果有师傅有更方便的方法愿意分享的话我会非非非常感谢的 call checksec查看程序保护,发现程序没有开启pie保护以及canary保护程序存在明显的栈溢出 直接溢出打ROP泄露libc地址然后执行system("/bin/sh")即可完整exp如下 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950from xidp import *#---------------------初始化----------------------------arch =...
2025 ISCC 练武赛Pwn-wp(含附件)
前言去年个人赛报名了忘记打了(笑), 所以这应该算是我第一次参加ISCC, 体验也是差到没边了主办方也是非常幽默,pwn和web都是公用容器,那web最后都被当成玩具玩坏了下面是这次练武题pwn方向所有附件通过网盘分享的文件:2025ISCC练武赛Pwn全部附件.rar链接: https://pan.baidu.com/s/1aDBEOZ4XESb6yfCrCI5Wgg?pwd=xidp 提取码: xidp 解出genius 先后输入 no 和 thanks 最终进入 function3函数 中,这里存在两个溢出,一个是 read溢出,一个是 gets溢出我们注意到read溢出下面有一个pritnf输出,所以我们可以通过read来覆盖掉canary结尾的\x00使得canary被pritnf输出,然后再利用gets溢出打ROP,注意程序已经为我们提供了 backdoor 完整exp如下: 123456789101112131415161718192021222324252627282930313233343536373839404142from xidp import...
2025 UCSCCTF Pwn-wp(含附件)
前言说实话有点失望, 比赛平台超级卡,而且比赛一开始平台就崩了,题目难度偏低(也是很遗憾,本来可以抢个血分的,但是太卡了靶机就是打不开)但是还是感谢比赛出题的师傅愿意分享自己的题目 通过网盘分享的文件:2025UCSCCTF.rar链接: https://pan.baidu.com/s/17yqcmGRXWN1oNMvgZNRv5w?pwd=xidp 提取码: xidp内含2025 UCSCCTF三个pwn题的附件 由于题目比较简单我就简单介绍我的思路并放上exp了 BoFido-Ucsc程序里开头有seed =...
D-Link 登录信息泄露(权限绕过)漏洞分析报告(CVE-2018-7034)
前言漏洞编号CVE-2018-7034,影响D-Link和TrendNet的一些老设备。 通过网盘分享的文件:TEW751DR_FW103B03.bin链接: https://pan.baidu.com/s/1g37sSUnZQDQjpg_ABuGULg?pwd=xidp 提取码: xidp 这里分析的是TrendNet TEW751的固件,此外D-Link的一些老设备,如DIR645,DIR815等也都受该漏洞影响。 基础工具配置复现环境 Ubuntu 24.04.2 LTS 基础工具配置可以参考这篇文章中的配置: DIR-815 栈溢出漏洞(CNVD-2013-11625)复现-先知社区 漏洞分析存在漏洞的地方为 /squashfs-root/htdocs/web/getcfg.php 这里通过 $AUTHORIZED_GROUP 变量判断用户权限而 $GETCFG_SVC = cut($_POST["SERVICES"], $SERVICE_INDEX, ","); 中,$GETCFG_SVC 是通过 POST 传入的...
2025 XYCTF Pwn-wp(含附件)
前言总体来说Pwn方向题目难度属于中等,属于那种一眼看不出要咋做,但多试试又能做出来的那种,比赛的时候甚至有几只队伍AK了Pwn方向。感觉题目还是很不错的尽管比赛中有一些小意外像是有些题目附件给错了,但是XYCTF的师傅们都是无偿出题纯热爱向大伙分享自己的题目和知识,感谢所有XYCTF出题的师傅,明年我还来打(〃'▽'〃) 通过网盘分享的文件:2025XYCTF.rar链接: https://pan.baidu.com/s/1yf7piV-H4U2qtXiQyo9eBw?pwd=xidp 提取码: xidp其中含有pwn方向全部赛题、官方wp、奶龙出题人提供的奶龙wp以及ddw队伍的师傅分享在群里的pwn方向全解wp Ret2libc’s...
非栈上格式化字符串的利用方法
前言本文以第六届强网拟态线下赛的格式化字符串Pwn题为例,分享非栈上格式化字符串的利用方法。主要涵盖两个关键技术点: 多级指针链利用:当格式化字符串不在栈上时,通过修改栈上现有的多级指针链(二重/三重指针)来间接控制目标内存 高位截断技术:当前期输出字符数已超过后期需求值时,利用0x10000溢出特性实现单字节精确写入 同时探讨为何不能在同一条指针链上使用 $ 符号进行连续修改的问题,并提出个人结论(如有错误希望师傅们指出)。 通过网盘分享的文件:第六届强网拟态fmt.rar链接: https://pan.baidu.com/s/19-fAYm0DuEhkSO7SzlJLAg?pwd=xidp 提取码: xidp 第六届强网拟态线下赛的格式化字符串 程序逻辑很简单,白给一个stack的地址,然后给一个非栈上格式化字符串的机会,最后没办法控制main函数的返回地址,因为是直接使用exit退出 显而易见的我们遇到了两个问题: 首先我们的 buf 不在栈上,没办法随意在栈中写入我们想要的地址然后去修改 其次我们只有一次机会 首先来看看如果是 非栈上的格式化字符串...
ret2gets的原理与利用方法
前言ret2gets是一种利用glibc优化特性(高版本编译器)的漏洞利用技术,核心是通过gets函数配合printf/puts实现libc地址泄露。该技术适用于: 存在栈溢出漏洞 程序包含gets函数 缺乏直接控制rdi寄存器的gadget(如pop rdi; ret) 技术原型参考: ret2gets | pwn-notes ret2gets | pwn-notes演示程序: ret2gets_demo https://pan.baidu.com/s/1rf8JEi1sGBZdM-MxpnjMTg?pwd=xidp 提取码: xidp 程序中 pop rdi; ret 的来源12345678// gcc demo.c -o demo -no-pie -fno-stack-protector#include <stdio.h>int main() { char buf[0x20]; puts("ROP me if you can!"); gets(buf);} 我们正常会采用的方法很简单就是...
ELF 文件格式和程序段解析(简版)
ELF (Executable and Linkable Format): 是一种用于 可执行文件、目标文件 和 库 的文件格式,类似于 Windows 下的 PE 文件格式。 ELF 主要包括三种类型的文件: 可重定位文件 (relocatable): 编译器和汇编器产生的 .o 文件,由 Linker 处理。 可执行文件 (executable): Linker 对 .o 文件进行处理后输出的文件,代表进程映像。 共享对象文件 (shared object): 动态库文件,通常是 .so 文件。 ELF 文件包含多个段,每个段承担不同的作用。以下是一些入门级 PWN 可能需要用到的段(仅介绍这些基本段): .text: 用于保存程序中的代码片段。 .data: 用于保存已经初始化的全局变量和局部变量。 .bss: 用于保存未初始化的全局变量和局部变量。 .plt: 用于链接和跳转到对应的 .got 表。 .got.plt: 存储对应函数的真实地址的表。 .rodata: 只读数据 .init: 程序初始化和终止的代码 ELF...
C程序调用过程与函数栈变化(32位 vs 64位)(Intel)
本文使用Intel 的32位为例子进行举例。64位本质上和32位类似,主要区别在于函数参数的调用方式,文章结尾会简要提及。 重新回顾一下栈pop和push指令 12// 将0x50的压入栈push 0x50 1234// 将esp指向的数据放入指定的寄存器中pop 寄存器名字比如 :pop eax执行之后eax的值就变成了0x50 栈帧是什么?栈帧,也就是stack frame,其本质就是一种栈,只是这种栈专门用于保存函数调用过程中的各种信息(参数,返回地址,本地变量等)。栈帧有栈顶和栈底之分,其中栈顶的地址最低,栈底的地址最高,SP(栈指针)就是一直指向栈顶的。在x86-32bit中,我们用 ebp 指向栈底,也就是基址指针;用 esp 指向栈顶,也就是栈指针。下面是一个栈帧的示意图: 1234567891011// 这是一段有问题的C语言代码,仅仅只是用作C语言函数调用流程的介绍,为了方便读者理解#include <stdio.h>void func(参数1, 参数2 ,参数3 ) { }int main() { ...