摘要:
ciscn_2019_c_7 总结 主要是限制了UAF的chunk的大小为0x20,并且限制了add的次数,就很难受,并且题目用的还是calloc,没有使用tcache。最后还是使用fastbin attack+unsortedbin attack + FSOP获取到的shell。 fastbin 阅读全文
摘要:
nsctf_online_2019_pwn1 总结 根据本题,学习与收获有: 当off by one遇到calloc的时候,需要多次布局让2个指针,指向同一个0x70的chunk,然后一个先释放,然后利用unsorted bin的分割,使得fd变为main_arena + 88,再用另一个指针去修改 阅读全文
摘要:
linkctf_2018.7_babypie 总结 baby中的baby,记录下exp,水一篇博客。 Exp from pwncli import * cli_script() p:tube = gift['io'] elf:ELF = gift['elf'] libc: ELF = gift['l 阅读全文
摘要:
jarvisoj_itemboard 总结 基础的UAF的题,只记录下exp吧。 Exp from pwncli import * cli_script() p:tube = gift['io'] elf:ELF = gift['elf'] libc: ELF = gift['libc'] def 阅读全文
摘要:
sleepyHolder_hitcon_2016 总结 一个UAF洞,然后是常规的unlink。穿插着一个malloc_consolidation的理解,即如何构造unlink的条件。 利用过程 申请小的chunk 申请大的chunk 释放掉小的chunk 申请超大的chunk,此时触发malloc 阅读全文
摘要:
bbctf_2020_write 总结 题目可以任意地址写任意值,但是没有退出,因此可以考虑劫持rtld_global结构体中的一些函数指针。 利用exit函数的两个hook,同时观察寄存器状态,构造system("/bin/sh")拿shell。 这里出现的rtld_global结构体,可以伪造, 阅读全文
摘要:
hitcon_ctf_2019_one_punch 总结 仍然是tcache stash unlink的利用,这里总结两种思路: 任意地址分配时,先放5个,然后再凑2个出来 写堆地址的时候,放6个,伪造一下bk即可 利用思路 只有punch分支才能用malloc,其他分支都是calloc,因此要想办 阅读全文
摘要:
pwnable_simple_login 总结 本以为是要逆一下MD5,后来定睛一看,原来是个隐藏的栈迁移的题,还自带system("/bin/sh")。怪不得叫login,的确是签到题。也只记录下exp。 Exp from pwncli import * cli_script() p:tube = 阅读全文
摘要:
asis2016_b00ks 总结 经典的利用fastbin [0x70],然后攻击__malloc_hook + __realloc_hook的题。只记录下exp。 Exp from pwncli import * cli_script() p = gift['io'] elf = gift['e 阅读全文
摘要:
gwctf_2019_jiandan_pwn1 总结 题如其名,虽然简单,但是有个小坑,就是栈溢出的过程中,会把索引给覆盖掉,所以要注意索引的值: 即这里的v4为索引,在rbp的下方,溢出的时候注意一下即可。 Exp from pwncli import * cli_script() p:tube 阅读全文
摘要:
鹏城杯_2018_treasure 总结 根据本题,学习与收获有: 算是很简单的shellcode的题,需要手写shellcode 在写shellcode之前,可以先观察下寄存器状态,比如这题就可以很巧妙的去运用read的系统调用 使用xchg交换两个寄存器的值,是一个很方便的指令 题目分析 che 阅读全文
摘要:
RedPacket_SoEasyPwn 总结 根据本题,学习与收获有: 总结一个特殊的largebin attack,其实也不特殊,照着源码就能看出来,但是往往很少有题目这么考。即在往堆头节点插入大小相同的chunk时,若更改了堆头节点的fd,即可有一次任意地址写堆地址的机会。 tcache bin 阅读全文
摘要:
starctf_2019_girlfriend 总结 常规的fastbin attack,劫持__malloc_hook为realloc+2,然后__realloc_hook为one_gadget即可 题目分析 checksec 题目环境为ubuntu-16.04 函数分析 恢复下girlfrien 阅读全文
摘要:
inndy_echo2 解题思路 简单的printf,修改printf@got为system然后再输入/bin/sh获取shell exp from pwncli import * cli_script() p = gift['io'] e = gift['elf'] libc = gift['li 阅读全文
摘要:
ACTF_2019_OneRepeater 解题思路 什么保护都没有,几乎是白给。经典的格式化字符串,这里选择修改printf的got表内容为system然后再输入/bin/sh拿shell exp from pwncli import * cli_script() p = gift['io'] l 阅读全文
摘要:
GKCTF-2021-checkin 总结 根据本题,学习与收获有: 如果程序的栈溢出只覆盖到rbp,那么大概率也是考栈迁移,只是刚好当前函数结束后会执行依次leave; ret,然后上层函数还有一次leave; ret 合理利用程序中的gadgets,比如call puts指令等。劫持了rdi之后 阅读全文
摘要:
GKCTF-2021-EsapeSH 总结 根据本题,学习与收获有: 碰到分支比较复杂,流程比较长的题目,首先定位一下有没有泄露出flag的地方,有没有执行system("/bin/sh")的地方,可以快速定位到漏洞点 对于off by null漏洞,需要借助系统残留的fd和bk指针进行unlink 阅读全文
摘要:
OGeek2019-Final-OVM 解题思路 一道很有趣的虚拟机的题目,抽象实现了一套寄存器、代码段、数据段。解题思路如下: 利用一系列操作,将一个libc的地址放置在寄存器中 打印寄存器,即可得到libc地址 再利用寄存器写内存操作,将__free_hook写为system,释放/bin/sh 阅读全文
摘要:
wustctf2020_babyfmt 解题思路 题目还挺有趣的,点在于需要循环进行fmt_attack。栈上某个地址存储着fmt_attack_flag,当其不为0的时候,会直接执行exit退出。因此,需要尝试寻找一个地址,该地址存储着fmt_attack_flag的地址。因此,解题思路为: 修改 阅读全文
摘要:
ciscn_2019_n_7 解题思路 利用溢出修改指针的洞,将指针修改到stdout结构体上方,修改flag为0xfbad1800,然后修改IO_write_base为__environ地址,IO_write_ptr为__environ + 8地址,泄露栈地址 劫持__libc_start_mai 阅读全文