- 博客(61)
- 收藏
- 关注
原创 BUUCTF-PWN刷题记录25(IO file attack)
背景知识在做关于IO FILE的攻击的时候,对其中涉及的数据结构的了解必不可少,以下是几个关键的数据结构FILE 结构定义在 libio.h 中,如下struct _IO_FILE { int _flags; /* High-order word is _IO_MAGIC; rest is flags. */#define _IO_file_flags _flags /* The following pointers correspond to the C++ strea
2020-08-14 23:03:51
1713
1
原创 DASCTF六月赛部分赛题复现
目录PWNsecreteasyheapPWNsecret这题当时比赛的时候找到了先知上的一篇文章,研究了它的代码想在本题复现,但是总是不成功看了大佬们的博客,发现这题居然这么简单Orz简单说一下这题的原理:本题先close了stdout,然后给写两字节和0x18字节的机会,之后close stderr和stdin那么我们先分析一下fclose的源码,其核心函数是位于/libio/iofclose.c的_IO_new_fclose函数,其大致流程是:首先检查文件结构体指针,之后使用_IO_
2020-08-13 18:33:47
1417
原创 第五空间 部分题解
目录PWNtwice(栈迁移,ret2csu)pwnmeofREnopPWNtwice(栈迁移,ret2csu)第一次先泄露出canary和rbp地址第二次栈迁移+ROP,先puts泄露出libc,然后ret2csu把新的ROPchain读进来from pwn import *from LibcSearcher import *r = remote("121.36.59.116", 9999)#r = process("./twice/pwn")context(arch='amd64',
2020-06-26 21:36:14
982
原创 DASCTF&NepCTF 部分writeup
目录PWNoooorderspringboardeasyheap(本地成功)RET0p GearpyCharm521MagiaMISC透明度PWNoooorder一道不太复杂的题目,利用点都是之前遇到的,运气好拿到了一血edit中进行了realloc,如果size为0就会执行free,利用这个进行double free,由于禁用了execve,需要用setcontext执行mprotect并执行orw的shellcode关于orw部分,具体请见这篇博客:BUUCTF-PWN rctf_2019_
2020-06-26 21:08:42
4445
1
原创 DASCTF&BJDCTF 3rd 三道PWN题复现
最近看了一下上次安恒五月赛没做出的几道PWN题,感觉自己水平还是不够,还要多学习easybabystack(格式化字符串*, ret2csu)这题有个栈溢出漏洞但是必须输入正确的密码,否则就直接退出了还有个格式化字符串漏洞字符串长度为12由于密码是/dev/urandom生成的,无法预测。这里需要利用格式化字符串漏洞的’*'号%*num$d从栈中取变量作为N比如num$处的值是0x100,那么这个格式化字符串就相当于%256d而密码位于18$的位置,我们使用%*18$c就可以打
2020-06-21 12:07:09
948
原创 VM pwn入门
VM pwn貌似是最近火起来的一类PWN题。最近打的好几场比赛都出现了VM pwn的题目,正好在BUU上面遇到一道2019年的OGeek中出现的VM pwn题,感觉应该会比较简单,另外听说高校战役里的EasyVM也是偏简单的VM pwn题。本文就主要对这两道题目进行分析。[OGeek2019 Final]OVM程序分析作为VM pwn的第一步就是需要搞清楚指令的格式,操作码和操作数本题使用的是定长指令,一共32bits,每一个占8bits,但除了操作码能利用完8bits之外,寄存器只占4bits,
2020-06-07 17:14:21
2235
原创 Android逆向:frida学习(2)
在Android逆向:frida学习(1)中已经介绍了frida的安装与基本使用方法,并且以一道2015年的SECCON CTF例题展示了如何使用它的hook功能。下面还是以一道CTF题目来对frida的使用进行进一步说明
2020-06-06 18:23:02
809
原创 Android逆向:frida学习(1)
安卓的逆向题目在ctf中已经比较常见了。自从上次网鼎杯用了frida框架做过bang之后,感觉这个框架功能很是强大,因此打算学习一下这个框架,并记录一下学习过程以免以后忘了frida安装pip install fridapip install frida-tools我是在Windows系统上安装的,用的是python3,因为python2会报错pyhton2安装失败结果:frida-server启动流程首先需要去下载一个frida-server,网址:server下载地址因为我用的是雷
2020-06-05 21:08:31
1246
原创 BUUCTF-PWN rctf_2019_babyheap(house of storm,堆SROP)
目录题目分析漏洞利用Exp题目分析程序还有沙箱保护,把execve禁用了,只能orw了漏洞利用Exp
2020-06-05 13:04:24
1635
原创 glibc-2.29学习(上)
堆利用在CTF的PWN题目中一直占比较大,而最近的比赛的平台也逐渐从Ubuntu16,Ubuntu18向Ubuntu19甚至更高版本转移,为此学习一下libc-2.29中新的特性对做题还是很有帮助的libc-2.29新变化libc-2.29中修改了对tcache_entry的定义,通过注释我们也能看出新增加的key是为了检测double free的,如下/* We overlay this structure on the user-data portion of a chunk when t
2020-05-28 11:30:04
1273
原创 CTF中出现的各种字符/密码总结
最近几次比赛都遇到了不少没见过的字符,感觉还是很有必要收集一些平时做过题目的字符,每次遇到新的都会加进来猪圈密码(共济会密码)Braille alphabet(盲文)标准银河字母alphabet minimoys在线网站:https://www.dcode.fr/arthur-invisibles-cipher跳舞小人(Dancing Men Cipher)在线网站:https://www.dcode.fr/dancing-men-cipherUnown(Pokemon s..
2020-05-25 09:55:29
5317
原创 DASCTF&BJDCTF 3rd 部分writeup
目录MiscVmMiscVmaddr = 0x203020ans = []for i in range(32): tmp = hex(Dword(addr+i*4)) print(tmp) ans.append(tmp[:-1]) print ans
2020-05-24 08:28:28
3197
2
原创 IDA python 备忘
Operands(操作数)获取操作数的助记符我们可以调用 idc.GetOpnd(ea,long n)。 第一个参数是地址,第二个 long n是操作数索引。第一个操作数是 0 和第二个是 1。idc.GetOpType(ea,n)得到的操作数的类型。ea 是地址,n 是索引o_void如果一个指令没有任何操作数它将返回 0。o_reg如果一个操作数是一个普遍的寄存器将返回此类...
2020-05-20 12:14:43
1446
原创 BUUCTF-PWN刷题记录-22
目录ciscn_2019_n_2(double free)ciscn_2019_n_2(double free)delete的时候有一个double free漏洞利用思路:先用一个double free把0x602060(chunklist)申请出来,这样我们就能先修改里面的指针了,先利用GOT表泄露libc,然后写入__free_hook的地址并使用编辑写入system地址就行Exp:from pwn import *menu = "Your choice: "def add(con
2020-05-18 10:12:44
766
原创 2020第二届网鼎杯 朱雀组部分writeup
tree这题有个神奇的树(有点像哈弗曼树),叶子是b-z的字母用od动态运行一下,把树画了出来我们的输入会控制左走还是右走,48(‘0’)是左,49(‘1’)是右,而这个实际上是把数字转化为长度为4的01字符串最后我们要弄出这个字符串:zvzjyvosgnzkbjjjypjbjdvmsjjyvsjx根据字符串反推出48和49的集合target = 'zvzjyvosgnzkbjjjypjbjdvmsjjyvsjx'tree = {}tree['z'] = [49,48,49,48]t
2020-05-18 08:30:02
1911
原创 IDA插件Python_editor详细安装教程
最近听说了python_editor这么一个神奇的IDA插件,可以在IDA里编写ida python脚本运行,然而作者的安装流程似乎有点小问题,只好自己研究,最后终于弄好了,记录一下安装的流程安装过程首先,把github上的东西下载下来地址:https://github.com/techbliss/Python_editor接下来步骤如下:把这个里面的东西解压到C盘根目录下(其实就是作者配好的PyQt5等等python包,python版本是2.7.13),链接:https://mega.nz/
2020-05-16 14:34:13
2469
原创 BUUCTF-PWN刷题记录-21
目录wdb_2018_1st_babyheap(unlink, UAF)wdb_2018_1st_babyheap(unlink, UAF)add的大小固定为0x20edit机会只有三次指针悬挂利用思路如下:进行几次添加add(0, (p64(0)+p64(0x31))*2)add(1, 'aaa\n')add(2, 'aaa\n')add(3, 'aaa\n')add(4, '/bin/sh\n')删除0和1,再删除一次0,此时show(0)能泄露出heap的地址
2020-05-15 09:32:17
754
1
原创 2020第二届网鼎杯 青龙组部分writeup
jocker前面是一个假的flag,直接跳过omg函数下面这段代码把0x401500-0x4015ba都亦或了0x41(也就是说在运行时修改了text段的encrypt函数),从而得到真正的encrypt函数这段代码会把输入与字符串hahahaha_do_you_find_me?亦或,如果等于0x403040的那一串值,就通过这串是0x403040:[0x0e, 0x0d, 9, 6, 0x13, 5, 0x58, 0x56, 0x3e, 6, 0x0c, 0x3c, 0x1f, 0x57, 0
2020-05-11 08:38:00
2173
原创 BUUCTF-PWN刷题记录-19
目录wustctf2020_name_your_catwustctf2020_name_your_dogwustctf2020_name_your_cat在NameWhich函数中没有越界检查我们调试看一下0xffd31214就是char v3[40]的地址而在0xffd3124c处就存放着函数返回地址0xffd3124c-0xffd31214=0x380x38/8=7所以我们name 7 就能修改这个返回地址了Exp:from pwn import *r = remote
2020-05-09 17:05:16
648
原创 BUUCTF-PWN刷题记录-18(格式化字符串漏洞)
目录xman_2019_format(字符串位于堆上)hitcontraining_playfmt(字符串位于bss)wustctf2020_babyfmtxman_2019_format(字符串位于堆上)一道格式化字符串题目,但是只有一次输入机会,但是有多次利用机会,每次利用使用‘|’隔开我们先看一下栈的情况经过多次调试,可以发现返回地址最低一个16进制位一定为0xC,我们只需要爆破倒数第二个16进制位就能得到指向返回地址的栈上地址Exp:from pwn import *#r =
2020-05-08 20:29:11
1930
原创 BUUCTF-PWN刷题记录-17
目录nsctf_online_2019_pwn1(堆重叠,_IO_2_1_stdout_泄露libc)nsctf_online_2019_pwn1(堆重叠,_IO_2_1_stdout_泄露libc)添加没有太大限制,但是会把之前内容清空删除没有指针悬挂,并且没有show功能edit有一个off-by-null利用思路因为本题的memset清0使得题目变得复杂了一点进行4次a...
2020-05-06 22:24:05
910
原创 BUUCTF-PWN刷题记录-16
目录ciscn_2019_es_5(realloc double free)npuctf_2020_easyheap(off-by-one)ciscn_2019_es_5(realloc double free)申请没有大小限制,数目上限为10edit会调用realloc重新申请(其实不会的,因为大小不变)如果edit就不能show了看了一下这题没有什么明显漏洞,但是考虑到re...
2020-05-05 20:41:43
832
1
原创 BUUCTF-PWN刷题记录-15
目录0ctf_2016_warmup(ROP,利用alarm修改eax)SWPUCTF_2019_login(格式化字符串漏洞,字符串位于bss)0ctf_2016_warmup(ROP,利用alarm修改eax)不能执行shellcode有一个缓冲区溢出由于NX保护,我们只能考虑ROP这里有一个小技巧,就是alarm函数程序开始调用了alarm如果我们之后再次调用alarm,...
2020-04-29 12:03:48
781
原创 BUUCTF-PWN刷题记录-14
目录sctf_2019_easy_heap(块重叠,double free)sctf_2019_easy_heap(块重叠,double free)这题原题目好像是在Ubuntu16下的,但是BUU上面是Ubuntu18,所以应该更简单一点总的来说,这题应该是ciscn_2019_final_3的加强版吧,当然也有更简单的地方首先,给了我们一块rwx的空间add函数会给你conten...
2020-04-29 10:51:25
853
原创 BUUCTF-PWN刷题记录-13(静态编译+去除调试符号)
目录[中关村2019]one_string(unlink)[中关村2019]one_string(unlink)看这个保护,我以为很简单,然而···这题去除了所有符号,并且是静态编译,所以第一步就是把主要函数找出来,如下在edit函数中,程序会重新计算content的长度,这个时候如果利用了chunk复用,下一个chunk的size也会被计算进长度,这样下次编辑的时候就能覆盖si...
2020-04-27 20:38:11
1489
原创 houseoforange_hitcon_2016(House of orange, unsorted bin attack,FSOP)
目录题目分析漏洞利用Exp题目分析只有添加,显示,编辑三个功能,没有删除添加函数,最多只能添加四次,每次添加会依次执行malloc(0x10),malloc(name_size),calloc(8)House结构体如下在编辑函数中,可以进行堆溢出,因为House没有把name的size保存下来编辑次数最多为3漏洞利用Exp...
2020-04-27 11:26:04
1671
1
原创 BUUCT-PWN 0ctf_2018_heapstorm2(house of storm)
目录题目分析漏洞利用Exp题目分析这题估计是house of storm利用的起源?因为用这种办法直接就可以做通,后面还有rctf_2019_babyheap也需要用到house of storm,但是那题限制条件多多了init()里先把fastbin禁用了申请了0x13370000这块内存,并且做了初始化初始化首先读入长度为0x18的随机数,就记为3个long long随机数吧...
2020-04-25 10:32:06
1765
1
原创 BUUCTF-PWN刷题记录-12
ciscn_2019_sw_1一道思路比较独特的格式化字符串漏洞题目main函数中只有一次利用漏洞的机会有system的got表项一个可行思路是把printf的GOT改为system@plt,然后输入/bin/sh,但是考虑到只有一次机会就比较困难所以我们需要一个能让main多次执行的办法这时我们只要把main的地址填入finit_array就能无限循环main函数了简单介绍一...
2020-04-23 18:13:02
811
原创 BUUCTF-PWN roarctf_2019_easyheap(double free, stdout重定向)
这里写目录标题题目分析漏洞利用Exp题目分析有添加,删除,展示三个主要功能,不过添加有次数限制,同时限制了申请大小,使得我们不能申请出unsorted bin范围内的chunk删除之后没有置空,可以多次freeshow功能有条件限制,而且会把stdout关了添加和后门的次数后门函数可以进行calloc和free,同样没有置空,但是后门函数的次数限制逻辑有问题,即使为0还会再...
2020-04-23 10:58:27
865
原创 BUUCTF-PWN刷题记录-10
目录wustctf2020_number_game(neg操作原理)zctf2016_note2(强制转换溢出,unlink)wustctf2020_name_your_catwustctf2020_number_game(neg操作原理)需要输入一个数,变为负数之后还是负数这题就设计计组知识了,neg的操作为按位取反+1,而0x80000000取反加一之后仍然是0x80000000,所以...
2020-04-19 16:44:37
913
原创 BUUCTF-PWN gyctf_2020_bfnote(劫持TLS结构,ret2_dl_runtime_resolve)
目录程序分析背景知识延迟绑定Canary漏洞利用Exp程序分析一道带有canary的栈溢出题目main函数是吧ebp-4中存放地址再减四获得的调试结果如下背景知识延迟绑定本题需要利用ret2al_runtime_resolve,涉及到延迟绑定的技术,简单介绍一下函数绑定的过程,以atol的调用为例我们看一下第一次调用程序atol,此时atol_got存放着atol@plt+6...
2020-04-19 11:41:24
1729
1
原创 BUUCTF-PWN roarctf_2019_realloc_magic(tcache attack,块重叠,劫持_IO_2_1_stdout_泄露libc)
目录题目分析漏洞利用Exp题目分析free没有限制,可以多次free使用realloc进行内存分配,没有限制大小realloc的几个特殊用法(摘自官方WP)size == 0 ,这个时候等同于freerealloc_ptr == 0 && size > 0 , 这个时候等同于mallocmalloc_usable_size(realloc_ptr) &g...
2020-04-17 18:43:09
2077
17
原创 BUUCTF-PWN刷题记录-8
目录roarctf_2019_realloc_magicroarctf_2019_realloc_magic
2020-04-16 20:13:17
973
3
原创 BUUCTF-PWN gyctf_2020_force(house of force)
目录程序分析漏洞分析漏洞利用EXP程序分析程序只有添加功能,puts功能没有用添加功能中,有三个注意点chunk大小没有限制可以获得分配空间的地址读入长度固定为0x50漏洞分析根据题目force,可以联想到house of force堆利用方法以下内容取自ctf-wikiHouse Of Force 是一种堆利用方法,但是并不是说 House Of Force 必须...
2020-04-15 10:58:43
1444
1
原创 BUUCTF-PWN ciscn_2019_final_5(临界条件错误,劫持GOT表项)
目录题目分析漏洞分析漏洞利用Exp题目分析例行安全检查没有PIE,方面调试partial relro意味着这题应该直接改GOT表就能做菜单:没有show功能,可以考虑吧某个函数(比如free的GOT)改为puts@plt可以申请17个chunk,编号为0-16每次分配结束后会显示分配内存的低12bits而本题中还有一个特殊的地方,就是content数组(0x6020e0)...
2020-04-14 16:41:07
1116
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人