![](https://img-blog.csdnimg.cn/20200216130545234.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
CTF-PWN
文章平均质量分 90
pwn基础知识,writeup,心得
ATFWUS
电子科技大学硕士,CSDN博客专家。曾在两家top互联网大厂及一家央企工作,拥有丰富的工程实践经验,热爱技术的开源与分享。关注我,一起在计算机的海洋里系统化的学习!(本博客简介见个人主页或博客简介专栏)
展开
-
DynELF使用小结
0x01.感悟DynELF对于没有libc的题来说,真的非常好用,可以得到system的地址,比面对几十上百种libc可能的LibcSearcher简直不要太好用,真的是一个好工具!!!0x02.注意事项DynELF的使用,也需要注意一些限制条件和具体的使用范围:DynELF的原理是在内存中不断搜索地址信息,所以漏洞一定要可以反复的被利用。 因为需要输出地址,所以一定需要相关的相...原创 2020-03-12 17:32:19 · 5997 阅读 · 2 评论 -
welpwn(RCTF-2015)--write up
文件下载地址:链接:https://pan.baidu.com/s/1MG2z9r4wz_WTEz1vIikqJQ 提取码:3tbc0x01.分析checksec:源码分析:流程非常简单,首先输入一个1024大小字符串,然后进入函数echo,这个函数会将buf的数据一个字节一个字节的复制到s2中,...原创 2020-03-12 17:10:48 · 913 阅读 · 0 评论 -
pwn-100(L-CTF-2016)--write up
文件下载地址:链接:https://pan.baidu.com/s/1SkbJmjnCtZETaafLEIUuLQ 提取码:wjb0前言:风萧萧兮雨萧萧,忆君兮,不知。0x01.分析checksec:分析源码:发现主要功能在sub_40063D,我们分析一下该函数,发现,该函数的功能是:向v1写满200字节,且一定要写...原创 2020-03-11 11:05:50 · 933 阅读 · 0 评论 -
堆的相关数据结构
0x01.malloc_chunk在程序的执行过程中,我们称由 malloc 申请的内存为 chunk 。 这块内存在 ptmalloc 内部用 malloc_chunk 结构体来表示。 当程序申请的 chunk 被 free 后,会被加入到相应的空闲管理列表中。 无论一个 chunk 的大小如何,处于分配状态还是释放状态,它们都使用一个统一的结构。 虽然它们使用了同一个数据结构,但是...原创 2020-03-05 15:21:26 · 384 阅读 · 2 评论 -
Glibc内存管理-Linux的内存布局
32位模式下的经典布局:32位模式下的默认布局:64位的内存布局:主要段说明:Knernel space 指内核空间。 BSS段主要存储未初始化的全局变量或者初始化为0的全局变量和静态变量的一块内存区域。(可读可写) BSS段属于静态内存分配。它的初始值也是由用户自己定义的连接定位文件所确定,用户应该将它...原创 2020-03-05 13:55:21 · 348 阅读 · 0 评论 -
堆结构(Heap Structure)
0x01.堆的定义在程序运行过程中,堆可以提供动态分配的内存,允许程序申请大小未知的内存。 堆其实就是程序虚拟地址空间的一块连续的线性区域,它由低地址向高地址方向增长。 一般称管理堆的那部分程序为堆管理器。 堆管理器处于用户程序与内核中间。 目前 Linux 标准发行版中使用的堆分配器是 glibc 中的堆分配器:ptmalloc2。ptmalloc2 主要是通过 malloc/fre...原创 2020-03-04 11:02:29 · 1417 阅读 · 0 评论 -
pwn-200(XDCTF-2015)--write up
文件下载地址:链接:https://pan.baidu.com/s/1W-bn57DPwr0GZlOsAl2enQ 提取码:z3sy0x01.分析checksec:32位程序,只开启NX。查看源码:分析源码:从源码可以得出,主要在read出有栈溢出漏洞。 程序并没有留后门,得靠自己想办法去执行,system('/bin/sh')。漏洞利用思路:首...原创 2020-03-03 20:02:10 · 2766 阅读 · 1 评论 -
DynELF
0x01.概述DynELF是pwntools中专门用来应对没有libc情况的漏洞利用模块,在提供一个目标程序任意地址内存泄漏函数的情况下,可以解析任意加载库的任意符号地址。 对于不同版本的libc,函数首地址相对于文件开头的偏移和函数间的偏移不一定一致;如果题目不提供libc,我们通过泄露任意一个库函数地址计算出system函数地址的方法可能就不太方便了,所以这就要求我们想办法获取目标系统的...原创 2020-03-03 18:01:05 · 467 阅读 · 0 评论 -
Mary_Morton(ASIS-CTF-Finals-2017)--writeup
文件下载地址:链接:https://pan.baidu.com/s/1on3lMupdI7YfPkQj7AmzEw 提取码:amqq0x01.分析checksec:64位程序,开启了Canary,NX。对源码得简单分析发现,程序提供了两个漏洞,格式化字符串漏洞和栈溢出,并且发现了程序得后门:但是开启了cannary,我们无法直接覆盖返回地址,所以,我们必须利用格式...原创 2020-03-03 15:31:01 · 483 阅读 · 0 评论 -
Canary
0x01.关于CanaryCanary 的意思是金丝雀,来源于英国矿井工人用来探查井下气体是否有毒的金丝雀笼子。工人们每次下井都会带上一只金丝雀。如果井下的气体有毒,金丝雀由于对毒性敏感就会停止鸣叫甚至死亡,从而使工人们得到预警。 栈溢出保护是一种缓冲区溢出攻击缓解手段,当函数存在缓冲区溢出攻击漏洞时,攻击者可以覆盖栈上的返回地址来让 shellcode 能够得到执行。当启用栈保护后,函数开...原创 2020-03-03 14:09:50 · 875 阅读 · 0 评论 -
攻防世界--pwn--新手区-WP合集-目录
到今天为止,攻防世界中pwn新手区的题已经做完,整理了这10道题的WP,比较基础。这里是10道题的统一文件:链接:https://pan.baidu.com/s/1tXPMWvrWA7XW7zhDYsA4kA 提取码:3jrn下面是WP的合集:get_shell--writeupcgpwn2---writeupwhen_did_you_...原创 2020-03-03 12:20:26 · 2071 阅读 · 0 评论 -
CGfsb--writeup
文件下载地址:链接:https://pan.baidu.com/s/1a9zj-OQAOgTw7KooZPBBaQ 提取码:y9wi0x01.分析checksec:32位程序,没有开启ASLR。查看源码:利用漏洞:在查看源码的时候,很明显的发现23行存在格式化字符串漏洞,后面如果pwnme等于8,那么就可以直接得到flag,所以我们要利用格式化字符串漏洞修改p...原创 2020-03-03 12:06:37 · 470 阅读 · 0 评论 -
get_shell--writeup
文件下载地址:链接:https://pan.baidu.com/s/1Vd0eDzX5eXINCkpXzT0Gwg 提取码:hemt0x01.查看相关信息checksec:64位程序。查看源码:额,,,,,这个源码就有点侮辱智商了,直接运行就能得到shell, 也就是说我们只要绑定服务器运行这个程序,就有权限。这就很简单了。0x02.exp##!/usr...原创 2020-03-03 09:51:40 · 479 阅读 · 0 评论 -
string--writeup
文件下载地址:链接:https://pan.baidu.com/s/1E2AYj1OK3ERkvq3EBEHP9A 提取码:pye10x01.分析checksec:64位程序,只有ASLR没有开启。查看源码:理清程序流程:进入程序后,首先跳转到第一个有用的函数是400D72。 要求输入一个名字,长度要小于13。 然后进入400A7D...原创 2020-03-02 22:11:37 · 517 阅读 · 0 评论 -
格式化字符串漏洞
目录0x01.格式化字符串的基础知识1.格式化字符串说明2.常见带格式化字符串的函数3.格式化字符串的格式0x02.格式化字符串在内存中的原理1.举例2.调用printf前,栈的布局3.调用printf时的工作原理4.特殊情况0x03.漏洞的利用1.造成程序崩溃2.泄露栈内存3.获取栈中被视为指定参数的值4.获取栈中变量对应的字符串5.泄...原创 2020-03-02 17:30:08 · 1083 阅读 · 0 评论 -
level3--writeup
文件下载地址:链接:https://pan.baidu.com/s/1ByM1Dbt5j7Gw9mNkWryAVA 提取码:pqzc目录0x01.分析checksec:查看源码:程序流程:漏洞利用:0x02.exp0x03.说明0x01.分析checksec:32位程序,开启了NX。查看源码:程序流程:流程很简...原创 2020-03-02 13:50:20 · 625 阅读 · 0 评论 -
int_overflow--writeup
文件下载地址:链接:https://pan.baidu.com/s/1RiL_dBXGdIRsz76Nw0Mj2w 提取码:s8sy目录0x01.分析checksec:看下源码:理清一下流程:寻找一下漏洞:利用漏洞攻击:0x02.exp0x01.分析checksec:32位程序,开启了NX。看下源码:理清一下流程:...原创 2020-03-02 12:31:23 · 613 阅读 · 0 评论 -
整型溢出漏洞
目录0x01.整型在计算机系统中的相关知识0x02. 上界溢出和下界溢出上界溢出:下界溢出:0x03.漏洞利用0x01.整型在计算机系统中的相关知识在计算机中,整数类型分为无符号整数和有符号整数 两种。 有符号整数会在最高位用0表示正数,1表示负 数,而无符号整数则没有这种规则。因为计算机只认得二进制,认不得符号。 无符号的汇编代码是对内存进行加法运算. 在计算机...原创 2020-03-02 11:53:19 · 20605 阅读 · 0 评论 -
guess_num--writeup(含python和C++混合编程)
文件下载地址:链接:https://pan.baidu.com/s/13uowRQszM6GRvKMEYGG16g 提取码:le64目录0x01.分析0x02.重点0x01.分析checksec:64位程序,这,好像不太友好,全部保护措施全部开启,暂时无法直接使用栈溢出。查看源码:流程大概是,先要输入名字,然后开始猜数,有一次猜错就退出程序,必须每...原创 2020-03-01 16:16:14 · 601 阅读 · 0 评论 -
level2--writeup
文件下载地址:链接:https://pan.baidu.com/s/1jiR84G8Ji3luscmYTOOKAA 提取码:jz7n0x01.分析checksec:32位程序,开启NX。源码:发现系统调用了system,但是参数并不是/bin/sh,后面有read函数,存在栈溢出,继续寻找,看是否有bin/sh:果然存在。得到bin/sh的地址...原创 2020-03-01 15:02:06 · 596 阅读 · 1 评论 -
hello_pwn--writeup
文件下载地址:链接:https://pan.baidu.com/s/1Qp1fxOU8b4VobwSIouK7OQ 提取码:g47i0x01.分析checksec:64位程序,开启NX。源码:流程很简单,只要保证106c这个变量的值等于后面这个数字就可以了,前面有read函数,明显的栈溢出,只要想办法修改下面这个变量的值就行了。发现这两个变量的差...原创 2020-03-01 14:25:54 · 578 阅读 · 0 评论 -
when_did_you_born--writeup
文件下载地址:链接:https://pan.baidu.com/s/1eT_oVeEKPts8Lw2P0nDEnw 提取码:1axx0x01.分析checksec:64位程序,开启了堆栈保护和栈不可执行。查看源码:理清一下流程,先要输入v5,第一次不能输入1926,否则会退出,然后第二次输入名字,然后如果v5等于1926就直接得到flag,第二次输入的时候使用了g...原创 2020-03-01 13:58:11 · 516 阅读 · 0 评论 -
cgpwn2---writeup
文件下载地址:链接:https://pan.baidu.com/s/1MjaJM7ThNQewgIkpFKl3cg 提取码:v4l70x01.分析checksec:32位程序,仅开启NX。查看源码:大概理清一下流程,首先会输出字符串,然后要求输入一个字符串,放到name里面,然后返回的时候,再此要求出入字符串,然后再输出一句话后程序结束。发现高危函数:g...原创 2020-03-01 10:58:36 · 468 阅读 · 0 评论 -
ROP-中等-level5
这个题做了一下午。文件下载地址:链接:https://pan.baidu.com/s/1Ix7kc1ulu9a3OktifdUWWw 提取码:etug0x01.分析checksec:64位程序,开启NX。源码:存在栈溢出,可利用的函数有red和write。暂时没有思路了。。。0x02.新知识:利用__libc_csu_init在x64程序中,前六...原创 2020-02-29 19:41:29 · 778 阅读 · 0 评论 -
ROP-基础-ret2libc3
文件下载地址:链接:https://pan.baidu.com/s/1IMZt9WIlXDZBX2J-hoCyNA 提取码:jrsx0x01.分析checksec: Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enab...原创 2020-02-29 14:29:29 · 2133 阅读 · 1 评论 -
ROP-基础-ret2libc2
文件下载地址:链接:https://pan.baidu.com/s/1Lncq6vrUNEJ7vLKvTQ_gsA 提取码:yywk0x01.分析checksec: Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enab...原创 2020-02-28 22:46:18 · 1242 阅读 · 15 评论 -
ROP-基础-ret2libc1
文件下载地址:链接:https://pan.baidu.com/s/1DN4q7Dl5J45rIysA0DvZ5A 提取码:0wn80x01.分析checksec: Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enab...原创 2020-02-28 21:20:04 · 18190 阅读 · 0 评论 -
PLT表和GOT表
为了更好的用户体验和内存CPU的利用率,程序编译时会采用两种表进行辅助,一个为PLT表,一个为GOT表。 如果一个elf可执行文件需要调用定义在共享库中的任何函数,那么它就有自己的GOT和PLT。 PLT表称为过程链接表(procedure linkage table)。 GOT表称为全局偏移量表(global offset table)。 GOT表中存储真正的函数地址。 PLT表...原创 2020-02-28 20:46:03 · 986 阅读 · 0 评论 -
ROP-基础-ret2syscall
文件下载地址:链接:https://pan.baidu.com/s/1HBR7_yuCsP8awm_QNHTdAQ 提取码:uxt80x01.checksec Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled ...原创 2020-02-28 18:13:11 · 12658 阅读 · 0 评论 -
ROP-基础-ret2shellcode
文件下载地址:链接:https://pan.baidu.com/s/1McW3vCgUvTMRpLJcacN9rg提取码:didr0x01.checksec Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX disabled...原创 2020-02-28 16:40:50 · 780 阅读 · 0 评论 -
ROP-基础-ret2text
文件下载地址:链接:https://pan.baidu.com/s/1_zJ6U5QYokpjSiYLjiM3iA 提取码:gqrc0x01.checksec Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabl...原创 2020-02-28 14:39:06 · 729 阅读 · 0 评论 -
栈溢出的几种保护机制
Stack Protector(栈保护)也称 cannary。说明:当启用栈保护后,函数开始执行的时候会先往栈里插入cookie信息,当函数真正返回的时候会验证cookie信息是否合法,如果不合法就停止程序运行。攻击者在覆盖返回地址的时候往往也会将cookie信息给覆盖掉,导致栈保护检查失败而阻止shellcode的执行。在Linux中我们将cookie信息称为canary。canary...原创 2020-02-28 11:27:41 · 29884 阅读 · 0 评论 -
栈帧(Stack Frame)
0x01.栈在计算机中的应用在计算机系统中,栈也可以称之为栈内存是一个具有动态内存区域,存储函数内部(包括main函数)的局部变量和方法调用和函数参数值,是由系统自动分配的,一般速度较快;存储地址是连续且存在有限栈容量,会出现溢出现象,程序可以将数据压入栈中,也可以将数据从栈顶弹出。压栈操作使得栈增大,而弹出操作使栈减小。 栈用于维护函数调用的上下文,离开了栈,函数调用就没法实现。 栈是从...原创 2020-02-27 15:16:23 · 43129 阅读 · 3 评论