large bin attack及house of cat
好不容易学点东西赶紧记下来, 不然过几天又忘记了 前情提要: 1. 由于glibc 2.34开始, 去掉了常用的各种hook, 包括__malloc_hook, __free_hook, __exit_hook等, 标志了一个时代的落幕. 从此之后, 在没有什么特别的backdoor的情况下, 仅仅使用tcachebin, unsortedbin, fastbin等的攻击很难达到劫持执行流的目的, 所以这些方法现在更多是作为一个泄露偏移的存在 2. 失去了hook不代表堆题就没法劫持控制流了(不然还玩个蛋), 还可以寻找其他劫持的方法. 劫持方法需要满足: 泛用性, 即大多数的情况下都存在的利用方法; 简易性, 在较少的漏洞利用的情况下就可以实现 3. 在现有的诸多劫持方法中, 可以总结出一些经验, 就是 largebinAttack + 某种house. 其中largebinAttack手法用于预备一个ROP(或者别的什么), 以及伪造一个IO_FILE_PLUS结...
[水贴]记一次离谱报错
前情提要: 由于国赛在即, 而本人已经做了一个多月的dev没有碰过pwn, 所以打算复健一下, 结果第一个上午用着wsl就碰上了一个离谱bugBug 一个归档文件中, 包含了一个名为libc.so.6的libc同名文件, 然后tar -xf一下, 奇迹出现了, shell内除了buildin的工具全部失效了, 显示以下报错123456ls: libc.so.6: version `GLIBC_2.28' not found (required by ls)ls: libc.so.6: version `GLIBC_2.33' not found (required by ls)ls: libc.so.6: version `GLIBC_2.34' not found (required by ls)ls: libc.so.6: version `GLIBC_2.33' not found (required by /lib/x86_64-linux-gnu/libselinux.so.1)ls: libc...
矩阵并行计算的探索
ps: 课题来自于泥卓的课后作业ps: 建议把页面markdown自己放到vscode或者typora上, 因为本站的markdown似乎没有办法显示Latex语法 实验器材与工具1234567891011处理器:13th Gen Intel(R) Core(TM) i7-13700H 2.40 GHz机带RAM: 16.0GB(15.7GB可用)WSL 版本: 2.3.24.0内核版本: 5.15.153.1-2WSLg 版本: 1.0.65MSRDC 版本: 1.2.5620Direct3D 版本: 1.611.1-81528511DXCore 版本: 10.0.26100.1-240331-1435.ge-releaseWindows 版本: 10.0.22631.4317g++ 版本:11.4.0nvidia-cuda-toolkit: 12.3 矩阵乘法优化算法 存在矩阵M(m*n)和矩阵N(n*t)做矩阵乘法,按照矩阵乘法的定义,一共需要做m*n*t次乘法计算,以及m*n*t次加法计算,不难理解如果可以减少运算的次数,那么就会产生...
XEE寄存器和16字节栈对齐.
引子—-demo0和demo1的对比123456789101112// demo0#include <stdio.h>#include <stdlib.h>void getshell(){ system("/bin/sh\x00");}int main(){ getshell(); return 0;} demo0,直接在main()中调用后门函数,一切正常12345678910111213// demo1#include <stdio.h>#include <stdlib.h>void getshell(){ system("/bin/sh\x00");}int main(){ size_t array[3]; array[5] = getshell; // 数组越界 return 0;} dem...
dl题内存布局初探
前情提要 众所周知,在选择dl攻击时,往往没有回显,也就是无法得到attachment、libc、ld的在内存中的加载基址, 一般来说,这三者的加载地址应该是互不相关的,但根据个人经验来看,libc和ld一般是连在一起的(中间可能有别的内存页),也就是知道其中一个的基址以及内存的布局,就可以知道另一个的基址 那么__dl_runtime_resolve时如何找到,这三者的关系,依靠的是在ld中的linkmap表,这个表记录三个文件(或许更多)的linkmap地址,而linkmap中就含有加载基址的信息。 以下的所有调试和maps的查看均以之前的boss题为例,但实际上重点在于该程序mmap()一个0x2000大小可读写的内存段,本文的一个重心将会是这个mmap()得到的内存的相对位置。123456pwndbg> linkmapNode Objfile ...
glibc动态链接重定位 + CNSS2024 pwn boss wp
参考资料:实例文件为boss题的attachment,见githubhttps://zhuanlan.zhihu.com/p/37572651https://ctf-wiki.org/executable/elf/structure/basic-info/https://deepunk.icu/dl%E7%9B%B8%E5%85%B3%E6%94%BB%E5%87%BB%E6%B1%87%E6%80%BB/ https://www.soinside.com/question/AENBEApAgMMbfzPviVeoBc 动态链接程序的装载 当程序使用动态链接时,才会存在延迟绑定技术。 一个动态链接的程序,除了要将程序本身加载进内存之外,还需要加载对应使用的libc,这一步由ld动态链接器实现。 由于动态链接信息与程序的形成和加载由莫大关系,所以在linux系统下,这些信息必须在二进制文件中明确写出,而不是存放在某个PATH中。12345678910首先,我们来关注一下链接视图。...
CNSS2024 pwn 方向wp
前排提示:1.一些题目没exp 2.由于题目不是一次上完的,所以顺序上可能不完全与当时一致 3.附件在GitHub仓库里有💓 引导之始(🍼Baby)1234567891011121314151617⚠ 题目描述即使引导早已破碎,也请您当上PWN高手。nc 152.136.11.155 10030💡 Hint一头雾水?你可能需要阅读群文件->Bin Guideline需要一点点命令行操作的知识nc是什么?装个Linux吧💻 题目附件点击下载🚩 Flag格式cnss{meaningful_sentence}🔨 暴打出题人@Orchid 你室的pwn每年都有的nc就送题🫨 打地鼠(🍼Baby)12345678910111213141516⚠ 题目描述打不到我,打不到我喵(/≧▽≦)/nc 152.136.11.155 10031💡 Hint你不会真打算自己打吧你可能需要...
pwn的那些时尚小垃圾
Step0 时尚小垃圾的起点 在此之前一直使用的是Kali镜像 + 虚拟机的组合,因为kali自称是专精于渗透和测试方面,预安装了许多的有用的工具。但实际操作下来,发现预安装的工具绝大多数都对pwn方向没有太大帮助,很多工具和环境还是需要手动配置,况且无论是vim还是idle编辑器说实话都不是特别好用。 但最关键的其实是因为编译器项目要使用wsl,而在虚拟机里使用qemu需要开启虚拟化 intel vt-x/ept 或 amd-v/rvi 选项,而这个选项与wsl所需的Hyper-V相冲突。也就是说写kernel-pwn就没法同时做项目,做项目就没法写kernel-pwn,Hyper-V的开关都需要重启才能生效。 考虑到wsl + vscode由于没有图形化,效率更上一层,所以写下以下blog记录从头开始的环境配置。 Step1 vscode + wsl 略,网上攻略很多。 有一点需要注意,就是wsl和wind...
CNSS2024夏令营'命运石之门'writeup
Step0 题目信息 初始分数为1000分 如你所见,没有任何hint,从描述上也看不出所以然 Step1 文件检查 获取附件: attachment:elf可执行文件 libc:libc.so.6 ld:无 检查attachment文件: 64位小端序可执行文件,动态链接,符号表保留 got表可写,没有栈溢出保护,堆栈不可执行,无pie;后续静态分析未发现沙箱保护 配置本地调试环境: 略,因为缺少链接器ld,而且远程版本未知 Step1.5 补充一点前置知识 &ems...