随笔分类 -  PWN writeup

摘要:xman_2019_format(非栈上格式化字符串仅一次利用的爆破) 首先检查一下程序的保护机制 然后用IDA分析一下 存在后门 首先malloc了一片堆空间,读入数据 把刚刚读入的数据当作格式化字符串传递给printf 这题就是考察格式话字符串不在栈上怎么利用,我们的想法就是利用栈上的数据。 首 阅读全文
posted @ 2020-05-20 13:30 Rookle 阅读(645) 评论(0) 推荐(0)
摘要:0ctf_2017_babyheap 首先检查一下保护 IDA 分析好的代码如下 首先申请了一块内存地址用来存放结构体数组,地址随机。 堆题常见的几个功能。我们来看看add 这里申请内存用的是calloc 这里没有检查size,size可以为任意值。造成堆溢出。 delete函数free后指针清零 阅读全文
posted @ 2020-05-16 18:57 Rookle 阅读(1158) 评论(0) 推荐(1)
摘要:鹏城杯_2018_treasure 首先检查一下保护: IDA分析 我们先来看看settreasure()函数 申请了两个内存空间,并往sea中复制了shellcode 看看这个shellcode,不知道干嘛的 我们再来看看第二个函数 读入一个长度小于等于9的shellcode,和我之前做的铁人三项 阅读全文
posted @ 2020-05-16 16:05 Rookle 阅读(475) 评论(0) 推荐(0)
摘要:铁人三项(第五赛区)_2018_seven 先来看看保护 保护全开,IDA分析 首先申请了mmap两个随机地址的空间,一个为rwx,一个为rw 读入的都shellcode长度小于等于7,且这7个字符不能重复。 然后把一个叫initial的东西复制到rwx_page上,再把我们写的shellcode拼 阅读全文
posted @ 2020-05-16 11:35 Rookle 阅读(375) 评论(1) 推荐(0)
摘要:starctf_2019_babyshell 有时shellcode受限,最好的方法一般就是勉强的凑出sys read系统调用来注入shellcode主体。 我们拿starctf_2019_babyshell这道题来讲一讲,首先检查一下保护。 IDA分析 首先读入shellcode,然后检查shel 阅读全文
posted @ 2020-05-15 16:53 Rookle 阅读(1123) 评论(0) 推荐(1)
摘要:ret2dl64 ret2dl64 与ret2dl32不同,ret2dl64需要知道libc。 检查保护: IDA看一看 read_got 被置为0,强制你使用ret2dlresolve。 我们先伪造link_map,然后让程序去执行我们伪造的link_map,执行system('/bin/sh') 阅读全文
posted @ 2020-05-14 13:46 Rookle 阅读(350) 评论(0) 推荐(0)
摘要:ret2dl32 首先检查一下保护: IDA分析一下 程序很简单就是,往bss段上的buf读入0x400个数据,然后拷贝到栈上。read_got还被置为0,这一看就是要逼着你使用ret2dlresolve。 首先我们程序劫持到bss段 上面的代码使得我们把控制流劫持到base_stage的位置。ba 阅读全文
posted @ 2020-05-14 13:29 Rookle 阅读(166) 评论(0) 推荐(0)
摘要:3x17 文章主要是参考了https://xuanxuanblingbling.github.io/ctf/pwn/2019/09/06/317/ 首先我们检查一下开启的保护 运行一下,先让输入addr后输入data,感觉像是任意地址写,但是没有没有地址泄漏的功能。 放入IDA分析,程序是个静态链接 阅读全文
posted @ 2020-05-13 20:08 Rookle 阅读(818) 评论(1) 推荐(1)
摘要:silver_bullet 检查保护 程序很简单也就这几个功能。 重点关注一下这三个主要函数。 Create函数,首先输入一个小于等于0x30长度的字符串,然后在s[0x30]的地方存入输入字符串的长度。 Pwoer_up函数,首先判断之前输入的字符串长度是否小于0x2F,如果小于,则可以对字符串进 阅读全文
posted @ 2020-05-13 20:07 Rookle 阅读(354) 评论(0) 推荐(0)
摘要:hacknote 先来看看CTFwiki对fast bin 的介绍 Fast Bin 大多数程序经常会申请以及释放一些比较小的内存块。如果将一些较小的 chunk 释放之后发现存在与之相邻的空闲的 chunk 并将它们进行合并,那么当下一次再次申请相应大小的 chunk 时,就需要对 chunk 进 阅读全文
posted @ 2020-05-13 20:06 Rookle 阅读(242) 评论(0) 推荐(0)
摘要:applestore 首先检查一下保护 运行后可以看到是一个典型的堆管理的题目。 放入IDA中分析 main函数很简单,主要的功能在handler中。我们接着分析此函数。 list就是展示一下iPhone,ipad等的价格。 add函数功能是把商品加入购物车 其中先是create,再insert,有 阅读全文
posted @ 2020-05-13 20:05 Rookle 阅读(270) 评论(0) 推荐(0)
摘要:dubblesort 首先看一下保护 保护全开。。。。 运行一下,我们发现有一串奇怪字符串。该程序的主要功能是数组排序。 放到IDA里静态分析。我们看到刚刚奇怪的字符串是在栈上。而且我们可以输入一个很大的数字,然后把unsorted_array数组塞满,这样就可以溢出覆盖ret了。 这里有2个问题 阅读全文
posted @ 2020-05-13 20:04 Rookle 阅读(595) 评论(1) 推荐(0)
摘要:calc 首先先检查保护 可以看到正如程序名字一样是一个计算器的程序。 IDA静态分析代码 main函数主要调用了calc函数 而calc中parse_expr这个函数比较重要 我们用过1+2 3 4为例子,计算的过程大约是如下: 其中I为for循环的i,V为数字的开始 看懂了上面的大致流程,大概就 阅读全文
posted @ 2020-05-13 20:02 Rookle 阅读(553) 评论(0) 推荐(0)
摘要:Start 首先,检查一下程序的保护机制 什么保护都没开,而且是32位程序,一看就是简单题目。😌 我们运行一下 程序的执行流程也特别简单,打印一串字符串,让你输入然后就退出了。 然后,我们用IDA分析一下 用了两个系统调用,通过下面的网站查查linux系统调用表 http://syscalls.k 阅读全文
posted @ 2020-05-13 20:00 Rookle 阅读(952) 评论(1) 推荐(1)
摘要:orw 首先,检查一下程序的保护机制 开启了canary保护,还是个32位的程序,应该是个简单的题🤣丢到ida里静态分析一波。 程序很简单,叫你输入一个shellcode然后再运行你写的shellcode。 不过这道题的难点是这个orw_seccomp函数 prctl函数又是啥玩意儿?Prctl( 阅读全文
posted @ 2020-05-13 19:56 Rookle 阅读(492) 评论(0) 推荐(0)
摘要:babystack 首先检查一下保护 全保护开启,我们IDA分析一下。 main函数很简单,首先第一个read明显存在漏洞,如果不是以 结尾会存在栈中地址的泄漏。 第一个read我们泄漏了canary和elf的基地址。接下来我们用第二read 泄漏libc地址,控制程序返回main函数 接下来我们就 阅读全文
posted @ 2020-05-13 19:43 Rookle 阅读(348) 评论(0) 推荐(0)
摘要:No_leak 有这种题,题目很短小,只有一个read函数,没有输出函数,这样的题怎么解呢?当然首先想到的是ret2dl,但是那个有点儿复杂。下面我来介绍一种简单的解法。 代码如下: 先来看看保护: 程序很很简单,就是简单的栈溢出,遇到这种题,我们首选ROP,当然ret2dl也是ROP中的一种。 方 阅读全文
posted @ 2020-05-13 19:10 Rookle 阅读(652) 评论(0) 推荐(0)