Pwn
文章平均质量分 97
钞sir
物是人非事事休
展开
-
ctf-pwn的一些小技巧
皑如山上雪 皎若云间月原创 2020-11-15 16:19:10 · 10968 阅读 · 0 评论 -
off-by-one
简介off-by-one漏洞在堆分配时有比较大的威胁, 在pwn中利用比较常见, 这里介绍一个由base64解码造成的off-by-one漏洞, 这个漏洞在CVE-2018-6789当中是真实存在的, 这里以一个ctf中的pwn题目notepad来介绍一下利用过程;前置知识原理在分析程序之前先介绍一下Base64的编码和解码的原理;Base64编码Base64编码的原理是将二进制数据进行分组,每24Bit(即3字节)为一个大组,再把一个大组的数据分成4个6Bit的小分组;因为6bit数据只能表示原创 2020-11-05 17:06:43 · 9818 阅读 · 0 评论 -
针对IO的利用
简介正常情况下我们用户的输入长度和写入位置都在受到程序限制的,不可能让用户任意地址任意长度写入;但是利用特定的漏洞,我们可以修改到IO结构体中的指针,就可以绕过上面的那些约束从而getshell…_IO_FILE在结构体_IO_FILE当中有很多关键指针:结合源码:int_IO_new_file_underflow (_IO_FILE *fp){ _IO_ssize_t co...原创 2020-02-05 15:39:02 · 10081 阅读 · 0 评论 -
SROP
简介SROP的全称是Sigreturn Oriented Programming,这是ROP攻击方法中的一种,其中sigreturn是一个系统调用,在类unix系统发生signal的时候会被间接地调用;在传统的ROP攻击中我们需要寻找大量的gadgets来对寄存器进行赋值已达到我们的需求,而SROP可以减少我们寻找gadgets的难度…前置知识signal 机制我们都知道在Linux中,系...原创 2019-12-20 15:42:39 · 12431 阅读 · 0 评论 -
namebook
检查机制:sir@sir-PC:~/desktop$ checksec name[*] '/home/sir/desktop/name' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: No PIE (...原创 2019-03-06 21:30:54 · 3736 阅读 · 0 评论 -
ROP高级用法之ret2_dl_runtime_resolve
简介程序想要调用其他动态链接库的函数,必须要在程序加载的时候动态链接;在一个程序运行过程中,可能很多函数在程序执行完时都不会用到,比如一些错误处理函数或者一些用户很少用到的功能模块;所以ELF采用一种叫做延迟绑定(Lazy Binding)的做法,基本思想就是当函数第一次被用到的时候才进行绑定(符号查找、重定位等);而在linux 中是利用_dl_runtime_resolve(link_ma...原创 2019-04-29 14:57:02 · 11166 阅读 · 9 评论 -
hctf2016-fheap
题目地址:https://github.com/zh-explorer/hctf2016-fheap程序简介程序中只有3个功能,一个create,一个delete然后一个quit:+++++++++++++++++++++++++++So, let's crash the world+++++++++++++++++++++++++++1.create string2.delete ...原创 2019-03-28 14:15:13 · 10327 阅读 · 3 评论 -
2019西湖论剑Storm_note
分析这道题的漏洞不多,在edit note的时候有一个off_by_null漏洞:然后还有一个后门:没有show功能,想要泄露地址有难度;而且程序禁用了fastbin的申请:ssize_t init_proc(){ ssize_t result; // rax int fd; // [rsp+Ch] [rbp-4h] setbuf(stdin, 0LL); setb...原创 2019-04-13 12:44:56 · 10127 阅读 · 0 评论 -
Fmtstr_Loop
前言很多时候都是因为程序中存在循环,如果程序中不存在循环呢?在一些栈溢出中我们可以使用ROP技术劫持函数返回地址到start,同样我们可以使用格式化字符串漏洞做到这一点…实例题目:12届信息安全国赛半决赛西南赛区思路虽然我们写代码的时候以main函数作为程序入口,但是编译成程序的时候入口并不是main函数,而是start代码段。事实上,start代码段还会调用__libc_start_m...原创 2019-06-23 13:47:59 · 9793 阅读 · 0 评论 -
Linux kernel Exploit 内核漏洞学习(0)-环境安装
前言在Linux上面搞事情很多东西都可能需要我们利用源码来自己编译,相对于Windows来讲可能会比较麻烦和耗时,这个过程中肯定会遇到很多报错,所以一定要有耐心…方法步骤编译内核首先到linux内核的官网下载一份内核源代码并解压:至于需要下载的版本,随意就好,我下载的是5.2.1的…然后先安装有些依赖:sudo apt-get install git fakeroot build-...原创 2019-07-24 11:32:20 · 10979 阅读 · 0 评论 -
kernel pwn -- UAF
简介众所周知,UAF的全称是Use After Free,是一种释放后重用漏洞;之前一直是在用户态下对这个漏洞进行利用学习的,最近想要体验一下在内核环境中利用此漏洞进行提权操作…用户态的常规UAF可以看这篇文章…这里我利用的CISCN2017 babydriver来进行学习的,环境我已经放到github上面了,需要的可以自行下载…前置知识权限在Linux当中每个进程都有它自己的权限,而...原创 2019-07-25 16:30:44 · 10330 阅读 · 0 评论 -
Linux kernel Exploit 内核漏洞学习(1)-Double Fetch
简介Double Fetch从漏洞原理上讲是属于条件竞争漏洞,是一种内核态与用户态之间的数据存在着访问竞争;而条件竞争漏洞我们都比较清楚,简单的来说就是多线程数据访问时,并且没有对数据做必要的安全同步措施;当多线程时,对于同一数据有一个线程在读而有另外一个线程在写,这就可能引起数据的访问异常,而此时如果这个异常访问情况发生在内核与用户线程之间时,就触发double fetch漏洞了…为了简化漏......原创 2019-07-25 21:11:45 · 10830 阅读 · 0 评论 -
Unlink
简介unlink是在smallbin被释放的时候的一种操作,是将当前物理内存相邻的free chunk进行合并,简单的讲就是我们在free一个smallchunk的时候,如果它前面或者后面的chunk有空闲的,即in_use位为0时,就将前面或后面的chunk连在一起合成一个chunk;smallbin的数据结构:prev_size,size,fd,bk;因为smallbin被释放后是用双...原创 2019-03-03 17:24:19 · 4761 阅读 · 0 评论 -
Hgame2019_baby tcache
简介Tcache机制应该是从2.26之后版本的libc中才加进去的,而这个机制可能使我们的攻击变得更加简单,因为我们可能不需要去构造false_chunk,只需要覆盖tcache中的next,即将tcache中的next覆盖为我们自己的地址,从而达到任意地址写入;简单地来讲,Tcache机制就是增加一个bin缓存,而且每个bin是单链表结构,单个tcache bin默认最多包含7个块;在释放...原创 2019-03-01 15:10:08 · 3973 阅读 · 1 评论 -
pwnable.tw writeup
start这道题是静态编译的,或者可以理解是就是直接用汇编写的,所以这个程序很小,没有可以利用的函数;sir@sir-PC:~/desktop$ objdump -R startstart: 文件格式 elf32-i386objdump: start:不是动态对象objdump: start: 无效的操作反汇编代码:sir@sir-PC:~/desktop$ objdu...原创 2019-02-27 16:45:07 · 4086 阅读 · 2 评论 -
一个简单的例子入门pwn
首先,pwn大概是pwn to own的意思,就是通过二进制/系统调用等方式获得目标主机的shell;我直接以一个非常简单的栈溢出例子(基于Linux)来讲解pwn所要用到的一些常用的工具及命令;所需要的工具安装等,可以先看这个链接(https://blog.csdn.net/qq_40827990/article/details/83217716)例子下载地址:https://d...原创 2018-10-23 23:26:09 · 10461 阅读 · 0 评论 -
经典栈溢出 Easy RM to MP3 Converter
以一个样本(Easy RM to MP3 Converter)将作为经典栈溢出的讲解实例,首先说明此实验是WIN10环境下复现的;“Easy RM 2 MP3 Converter”是一个音频格式的转换工具,年代比较久远了。在2009年7月17日,packetstormsecurity公开了该软件的一个栈溢出漏洞并提供了exploit:https://packetstormsecurity.co...原创 2018-10-24 16:42:49 · 4311 阅读 · 0 评论 -
ctf-pwn的一些小技巧
当我们在写exp的时候有些需要去复制粘贴某些函数在plt表,got表的地址,或者找ROP的地址,有些时候复制粘贴不方便且不方便阅读,这样时候我们就可以用pwntools中提供的一些函数;以32位程序的exp为例:ROPgadget:0x0804872f : pop ebp ; ret0x0804872c : pop ebx ; pop esi ; pop edi ; pop ebp...原创 2018-11-09 16:33:26 · 5126 阅读 · 0 评论 -
deepin系统中关于pwn附加不了gdb
因为deepin系统终端自身的原因需要在代码中加一句:context.terminal = ['deepin-terminal', '-x', 'sh' ,'-c']然后就可以正常附加gdb上去了原创 2018-11-05 23:04:27 · 3748 阅读 · 0 评论 -
pwn初识格式化字符串漏洞
格式化字符串漏洞通常情况下是由printf函数产生的;正常情况下我们用printf函数输出字符串时是这样的:char a[100]="fmtstr";int b=12,c=666;printf("%s %d %x",a,b,c);但是有时是出于方便会直接输出字符串:char str[12]="fmtstr";printf(str);这时,如果这个str是我们用户输入可...原创 2018-12-02 15:21:04 · 4495 阅读 · 1 评论 -
Use After Free
我恋你如烈酒般浓 我恨你如风如影朦一清晨这一朦胧 粉身碎骨亦不逢原理use_after_free就是其字面所表达的意思,当一个内存块被释放之后再次被使用。但是其实这里有以下几种情况:内存块被释放后,其对应的指针被设置为 NULL , 然后再次使用,自然程序会崩溃。内存块被释放后,其对应的指针没有被设置为NULL,然后在它下一次被使用之前,没有代码对这块内存块进行修改,那么程序很有可...原创 2019-01-11 22:05:07 · 8456 阅读 · 3 评论 -
Ret2ShellCode
红颜祸 千般柔情 相思难解两相若蝶恋花 几经浮沉 枯骨终是化飞沙简介ret2shellcode顾名思义,就是return to shellcode,即让程序中某个函数执行结束后,返回到shellcode的地址去执行shellcode,得到system(sh)的效果;ret2shellcode是栈溢出中一种简单而且常规的操作,当配合ROP等技术的使用后,非常有用利用条件ret2shel...原创 2019-01-24 15:03:34 · 8268 阅读 · 9 评论 -
Fastbin Double Free
似水流年月下花前 一舞倾城醉红颜岁暮天寒月缺花残 独留孤影忆从前简介fastbin attack 是一类漏洞的利用方法,是指所有基于 fastbin 机制的漏洞利用方法,而fastbin_double_free就是其中的一种,这类漏洞利用的前提是:存在堆溢出、use-after-free等能控制chunk内容的漏洞漏洞发生于fastbin类型的chunk中Fastbin Double...原创 2019-01-19 17:56:00 · 5052 阅读 · 6 评论 -
Overflow Freed Chunk
一世风尘过往云烟 弯月又挂南山颠不见故人轻舞翩跹 只闻落泪往昔间简介Overflow Freed Chunk可以理解为常规的堆溢出,即程序向某个堆块中写入的字节数超过了堆块本身可使用的字节数(之所以是可使用而不是用户申请的字节数,是因为堆管理器会对用户所申请的字节数进行调整,这也导致可利用的字节数都不小于用户申请的字节数),因而导致了数据溢出,并覆盖到物理相邻的高地址的下一个堆块不难发现...原创 2019-01-21 22:28:00 · 3730 阅读 · 0 评论 -
Ret2libc
三生三世十里桃花 她就像是一道疤像风像雨像飞沙 像空气一样难抓简介ret2libc就是控制函数的执行libc中的函数,通常是返回至某个函数的 plt 处或者函数的具体位置 (即函数对应的 got 表项的内容)。一般情况下,我们会选择执行 system("/bin/sh"),因此我们通常需要找到 system 函数的地址ret2libc通常可以分为下面这几类:程序中自身就含有sys...原创 2019-01-26 22:34:02 · 8993 阅读 · 9 评论 -
Ichunqiu_Easypwn
轮回池前彼岸花 三生石旁那道疤擦不去的眼中莎 泪眼迷离失去她https://cc-sir.github.io/2019/01/28/ichunqiu_easypwn/方法这道题是i春秋CTF的一道题,也是“百度杯”CTF比赛 十二月场中的一道pwn,这道题比较简单我们先看看这道题的保护机制:sir@sir-PC:~/desktop$ checksec easypwn[*] '/ho...原创 2019-01-28 21:54:47 · 4047 阅读 · 0 评论 -
DynELF
我用三生的期许 换回三世相思雨三千浮沉里的你 迷失轮回的自己原创 2019-01-29 14:44:42 · 6248 阅读 · 6 评论 -
Linux下pwn预备知识
pwn,通过二进制/系统调用等方式获得目标主机的shell;需要的工具:pwntools:这个是基于python2工具,是写exp和poc的利器,安装可以参考链接:http://www.linuxdiyf.com/linux/21166.html:在终端输入:git clone https://github.com/Gallopsled/pwntoolscd pwntools...原创 2018-10-20 23:01:14 · 4286 阅读 · 0 评论