- 博客(11)
- 收藏
- 关注
原创 BUUCTF pwn 五月刷题
actf_2019_babystack典型的stack pivot,告诉了输入时候栈的地址,我们可以通过伪造ebp,通过两次leave将esp指向开始时候的栈地址。注意的是这里system("/bin/sh")有问题,换了one gadget才成功,不是很清楚为什么。from pwn import *context.log_level = "debug"context.terminal ...
2020-05-04 10:23:23
767
原创 BUUCTF pwn 四月刷题
BUUCTF四月刷题[OGeek2019]bookmanager这道题程序看似比较复杂,实际上好好分析程序的结构和逻辑之后,还是一个堆溢出,在updata函数中更新text时候可以更新0xFF长度的内容,造成溢出。这类题比较重要的是一定要弄清楚程序中的各种结构再下手。libc泄漏的手段还是通过small bin free进unsorted bin之后打印出main_arena附近的地址;ge...
2020-04-07 16:23:29
916
1
原创 babyfengshui_33c3_2016题解
这道题还是比较基础的堆题,泄漏libc和get shell都比较基础。需要注意的是以下几点:输入长度限制的绕过方法值得学习一下。泄漏libc时将free got表中写入puts.plt是不可行的,因为这道题的输入结束时候会带上\x00,这样就会破坏free got表的下一项fgets got,导致程序运行失败。我最后本机上运行成功,但是远程打不通,后来经过发现是因为libc的版本不一样,导...
2019-12-09 23:08:36
950
原创 安恒2018.10 level1思路讲解
程序功能分析主程序是一个菜单,只有两个选项。一个是create,另一个是show。没有关于free的函数,所以可能会用到house of orange的技术来创造一个unsorted bin。int play(){ int choice; // eax int result; // eax help(); choice = get_choice(); if ( choi...
2019-12-08 11:27:43
463
原创 2017 insomni'hack wheelofrobots
程序分析是一个64位程序,没有开启PIE。并且是一个菜单式的程序。add robot一共有六个robot可以添加。可以看到,添加一个robot,会在bss端上写入一个指向robot name的指针,in use位。并且每次的选择也是写入bss端上。还有一个count来限制add robot的次数,最多3次。这里有个漏洞。choice读入的时候能向bss端上读入五个字节。观察bss结构的...
2019-12-04 10:25:22
280
原创 2016 ZCTF note2 题解
程序分析先查看程序开启的保护,可以看到没有开启PIE。并且也是一个经典的菜单程序。new note函数可以看到,我们一共能申请四个堆块,堆块的指针,数量都存储在bss端上。我们能申请超过0x80的堆块,并在其中写入内容,这里的大小被限制了。但是我们进入my_read函数后就能发现for循环的条件中,size为int类型,而i是unsigned int类型。我们都知道,在c语言中,无符号变...
2019-12-01 16:30:57
971
2
原创 2014 hack.lu oreo
程序分析这是一个经典的菜单程序checksecadd函数建立了一个rifle结构体。struct rifle { description //从0字节开始 name //从25字节开始 pre_rifle_ptr //从52字节开始} //总共56字节并且注意到description和name都能读入56个字节,也就是说pre_rifle_ptr是能被完全控制的。并且有一...
2019-11-25 19:24:24
492
原创 2015 9447 CTF : Search Engine
程序分析index a sentence首先读入size大小的sentence,数据读入到malloac出的一个chunk中。对sentence中的每个word建立对应的结构体,也是分配到堆中,结构体中的组成为:struct word { word ptr //指向每个word的起始地址 word size //每个word的大小 sentence ptr //指向句子的起始地址...
2019-11-25 16:55:20
547
2
原创 HITCON-training lab 10 hacknote题解
基本信息首先,我们通过checksec来查看程序的基本信息和开启的防护。该程序是一个32位程序,并且开启了canary和nx。运行程序之后发现是一个菜单类型的程序。静态分析add note函数首先申请了一个8字节的chunk,其指针记录在bss段上。这个8字节的内容是一个结构体struct node { 指向print note content函数的指针 指向content的指针...
2019-11-19 23:25:53
781
原创 off by one --- Asis CTF 2016 b00ks题解
确定漏洞点首先,checksec查看开了哪些保护,其中PIE会使我们的调试难度稍稍增加。再执行程序之后是一个经典的菜单选择,可以大概判断是与堆的利用有关。通过用ida反编译之后查看,发现有一个关于读的函数会多读入一个\x00,造成了一个null off by one的漏洞。程序分析create 函数创建了book name的堆创建了book description的堆创建了b...
2019-11-18 19:17:07
643
翻译 malloc用到的系统调用
malloc用到的系统调用malloc在调用的过程中会用到brk和mmap这两个系统调用来获取内存。brkbr调用k通过增加program break location(brk)地址来获取内存。初始的时候brk地址和start_brk地址指向同一个地址。When ASLR is turned off, start_brk and brk would point to end of data...
2019-11-08 10:01:59
1586
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人