pwn
PLpa、
当你的才华撑不起你的野心时,你就应该静下心来学习。
展开
-
buuctf中的一些pwn题总结(不断更新)
前言:本文记录一些buuctf中不是很典型,但是仍然值得记录的pwn题,以便于查看。0x00:stkof——unlink查看保护查看IDA伪代码增自定义size,使用malloc分配。删free之后直接置空,难以利用。改重点来到改中,这里可以随意输入大小,然后根据输入的大小来为堆块中填入数据。这样就造成了堆溢出漏洞。解题思路由于此题存在堆溢出漏洞,我们又掌控着heap地址的存在位置,这样我们很容易就想到unlink漏洞来控制堆块。由于程序本身的原因,我们先malloc一个堆原创 2020-08-19 22:22:05 · 4537 阅读 · 0 评论 -
House of force —— gyctf_2020_force
前言:House of force是属于House of xxx系列的利用方法,House of xxx是2004年《The Malloc Maleficarum-Glibc Malloc Exploitation Techniques》中提出的一系列针对glibc堆分配机制的利用方法。想要利用House of force,需要以下条件:1.能够以溢出等方式控制top chunk的size域。2.能够自由的分配堆的大小解题思路保护机制保护全开,64位。IDA查看伪代码程序有两个功能,原创 2020-08-13 12:32:31 · 888 阅读 · 0 评论 -
libc2.26以下的单一堆溢出漏洞利用——0ctf_2017_babyheap
前言:此题为libc2.26以下的libc环境,在libc2.27及以上不一定行得通。解题思路:查看保护:保护全开的64位程序。观察IDA伪代码:我们进入IDA看看程序(在此之前建议先运行一遍程序,看看程序的逻辑)。标准的菜单题,题目先申请了一块堆结构来保存接下来我们要申请的堆地址,在开了保护的情况下,我们并不能很容易的找到这块堆地址在哪,这样我们就很难把堆块劫持到这个上面。我们看看各个功能:增本题采用了calloc来申请堆块,这样对于申请的堆块来说,原有的数据就会被清除掉,这样我原创 2020-08-03 11:49:46 · 590 阅读 · 0 评论 -
关于沙箱关闭execve的绕过技巧及SROP的简单利用方法 --(buuctf[V&N2020 公开赛])babybabypwn + warmup
前言最近做buuctf又发现一种以前没有见过的沙箱关闭execve的题目,在网上找了很多资料,终于初步了解了一些简单的绕过技巧,故写此博客记录一下。[V&N2020 公开赛]babybabypwn查看保护保护全开的64位Linux程序。IDA查看伪代码直接进入main函数看看,发现syscall函数,并不是很了解这个函数,但是通过百度我们知道syscall的几个参数的意义。第一个参数表示syscall调用的函数,例如题目中的15调用的就是sigreturn。看到sigreturn原创 2020-07-05 14:26:38 · 1420 阅读 · 1 评论 -
栈帧劫持的一些利用方法及注意事项--buuctf--gyctf_2020_borrowstack
前言最近在刷buuctf时发现了很多栈帧劫持的题目,从中取出最有代表性的、坑最多的拿出来写一篇博客记录一下。保护机制64位Linux程序,只开了NX保护。解题思路IDA看伪代码伪代码分析从代码中我们可以看到,read读入buf的字节大小只多了0x10,这样是不能构成ROP链的,但是我们发现,程序下面给了我们一个bank的bss段的地址,这不就是典型的劫持栈帧到bss段吗?但是这里有一个坑:我们可以看到got.plt距离bss段非常近,而bank又正好是在0x601080的位置,当我们原创 2020-07-01 10:24:10 · 576 阅读 · 2 评论 -
[V&N2020 公开赛]easyTHeap + ciscn_2019_final_3 ——heap中tcache的一些简单利用方法
在libc2.26之后的libc版本中加入了新的存储结构tcache,这使得我们利用堆的时候要特别注意libc版本。对tcache不是很了解建议看看CTFWiKi1.[V&N2020 公开赛]easyTHeap保护全开,libc2.27版本,进入IDA看到程序有增删改查的功能。我们一个个来看:add:我们可以看到add中不能写入数据。edit:add中不能读入的数据由edit来读入。show:没什么特殊的,就是输出数据,这里我们可以用其来查看我们泄露的地址。dele原创 2020-06-06 15:05:52 · 1088 阅读 · 1 评论 -
攻防世界(pwn) shell——c代码审计题
前言:此题难度没有前几题或者后几题难度大,考验的是对c程序逻辑的理解。开了canary和NX保护,我们打首先运行一下程序查看程序的逻辑。程序打开了一个shell,但是只能运行ls指令,不能运行cat指令,这样我们就不能查看远端的信息了。我们打开IDA看看程序的逻辑。通过IDA的提示,我们知道,程序还可以运行login指令,他是一个登录程序,登录成功后就可以获取权限。我们继续往下看...原创 2020-04-19 17:01:53 · 989 阅读 · 0 评论 -
攻防世界(pwn)250
前言:此题说难也不是很难,但是需要一些基础知识,否则利用起来比较困难。只开了NX保护的32位程序。此题里面的功能函数几乎都是自己写的,所以说没有一点基础知识,利用起来还是挺麻烦的。我们看到里面有一个自己写的print函数我们点进去发现,由于size是我们自己决定的,所以里面存在一个栈溢出漏洞。但是我们并不知道远端的libc环境版本,函数几乎自写,我们基本没什么信息可以利用,所以传...原创 2020-03-23 20:43:40 · 517 阅读 · 0 评论 -
攻防世界(pwn)babyheap(一些常见的堆利用方法)
前言:此题攻击链路:null_off_by_one修改堆块信息 => UAF泄露libc基址和其他有用信息 => fastbin attack申请堆块到指定地址 => 利用realloc_hook来调整堆栈 => one_gadget get shell。64位程序,保护全开。程序提供增删查操作,没有改操作。由于题目已经给了libc-2.23文件(虽然给错了)说明...原创 2020-03-22 11:58:43 · 2027 阅读 · 1 评论 -
攻防世界(pwn)echo_back + magic (_IO_FILE文件流攻击初探)
前言:这两题都是关于_IO_FILE文件流攻击的题目,如果对_IO_FILE文件流不是很清楚,可以看ctfwiki中的_IO_FILE介绍——传送门。echo_back——关于_IO_2_1_stdin结构的利用文件保护全开,不能got覆写。进入IDA,发现程序有两个功能,一个是setname,一个是echo back。查看setname功能,发现此功能只能输入7个字节,不具备RO...原创 2020-03-14 10:45:00 · 1368 阅读 · 0 评论 -
攻防世界(pwn)house_of_grey——Linux系统文件初探
前言:此题涉及到Linux的两个系统文件:maps和mem,不了解的可以看科普(传送门)。64位,保护全开,打开IDA64看看程序到底是怎么设计的。可以看到程序首先打开系统,然后用mmap映射了一片区域,并对fn函数进行操作,我们双击进入fn函数看看情况:fn函数里边又5个功能,没个功能都有用途,分析一下每个功能:第一个功能从字面意思看就知道是用来定位文件,然后打开他,但是不能打...原创 2020-03-06 12:05:07 · 1008 阅读 · 0 评论 -
攻防世界(pwn)Noleak
前言:看了大佬们的writeup,发现这题解法真的非常多,我这里用的是unsortedbin的地址写漏洞,详情可以看ctfwiki了解漏洞原因。没开NX,有可以执行的堆栈,但是开启了Full RELRO,不能修改got表地址了。打开IDA:发现是一个菜单题,可以创建,删除,更新堆快信息,没有输出信息的选项,果然Noleak。我们这里可以一个一个功能去看,看看漏洞存在哪里:经过观察...原创 2020-03-03 18:55:12 · 1538 阅读 · 2 评论 -
攻防世界(pwn)easyfmt
这题出的很奇怪,本地调试不知道为什么出问题,远程也调了很久才通,希望路过的大佬提出更好的思路和解题方式!查看一下保护:开了canary,NX,部分打开RELRO,没开PIE,可以尝试got表的覆盖。这里不能有时候全信,还是要打开IDA自己分析才行。可以看到有明显的格式化字符串漏洞,看看怎么利用他。要运行到格式化字符串漏洞,我们必须完成一个判定,我们进入CheckIn函数看看。Ch...原创 2020-03-02 10:46:45 · 1092 阅读 · 1 评论 -
攻防世界pwn RCalc
需要知识:ROP,堆溢出发现查询没开PIE和canary。程序在最开始申请了几个堆空间,并不允许我们自己申请,而且整个程序并没有free的地方,所以常规的堆漏洞并不容易利用,这时候我们就继续往下看。这里可以看到,主要功能函数处有一个没有输入限制的字符串,由此我们就联想到使用常规的ROP。但是程序在主要功能函数中添加了随机数植入,构造了一个自定义的canary,我们只要覆盖了这个随机...原创 2020-02-22 18:23:53 · 464 阅读 · 0 评论 -
攻防世界pwn supermarket + 实时数据监测
supermarket这是一个典型的堆题,菜单类型。只开了NX保护的32位程序。我们来分析一下程序程序实现了增删改查,其中改可以改价格和商品的描述,我们重点看改描述,因为程序的漏洞就在这里。首先让我们输入商品的名字,通过名字来找到商品,这里我们就可以伪造商品了。继续往下看会看到程序让我们输入描述信息的size。通过程序分析我们知道(&s2)[v1]+5是结构体中存储堆的si...原创 2020-02-13 11:48:26 · 926 阅读 · 0 评论 -
pwn格式化字符串漏洞小结
格式化字符串漏洞0x00.前言在pwn中,格式化字符串漏洞是一个非常基础的漏洞,他通常穿插在各种漏洞之中。比如,当程序开了PIE保护时,在栈溢出之前,我们先可以运用格式化字符串漏洞获取栈中的信息;通过格式化字符串漏洞的任意地址写,我们可以把栈帧劫持到堆地址上;我们甚至可以直接通过任意地址写,劫持got表,实现getshell……总而言之,格式化字符串漏洞虽然在目前市面上的软件中比较难以看到,...原创 2019-11-30 13:44:48 · 2485 阅读 · 2 评论 -
(攻防世界)(pwn)4-ReeHY-main
这题很早之前就做过了,之前做的时候没怎么注意,这次重新写又有很多感受。0x00前言这题有两种做法,一种是堆溢出,一种是栈溢出。第一次写的时候,由于刚刚入门,只会用栈溢出,这次重新看,用堆溢出试了一下,由于技术有限,还是出现了很多错误,找了很多资料,磕磕绊绊一下午才利用成功。故写此博客记录一下。0x01栈溢出利用方法此题的栈溢出漏洞比较明显,因为他有一个很明显的整数溢出漏洞,可以导致栈漏洞...原创 2019-10-24 13:40:22 · 400 阅读 · 0 评论 -
JarvisOJ level4
这题与level3相比就是就是题目并没有给出对应的libc文件,这里就要学习使用一波DynELF函数了,这是pwntools的一个函数,使用前请确认安装完整pwntools工具。前言:DynELF函数是通过已知函数,迅速查找libc库,并不需要我们自己本身知道对应版本的libc文件。这是DynELF函数使用的一个模板:def leak(address): payload=pad+p...原创 2019-07-08 18:58:40 · 2287 阅读 · 1 评论 -
Jarvis OJ level3 writeup
这题是典型的ROP返回libc地址题,是一个十分经典的ROP题目。拿到题目我们可以看到他给出了一个rar文件,我们拿这个文件到Linux中解压一下:解压出两个文件:level3和libc-2.19.so。我们查看一下这两个文件的保护:可以看到,libc-2.19.so保护全部开启了(幸好不是攻击他,哈哈),而level3只开了NX保护。我们把level3放到IDA中查看一下程序逻辑:...原创 2019-07-07 21:27:37 · 278 阅读 · 0 评论