首页
Python
Java
前端
数据库
Linux
Chatgpt专题
开发者工具箱
33c3专题
rec_33c3_2016(堆栈不平衡导致漏洞利用)
首先,检查一下程序的保护机制 然后,我们用IDA分析一下,功能1可以用于栈数据泄露,轻松得到glibc地址 功能5有一个函数指针,当输入为0时,其值未初始化 因此,只要能控制其指针在栈里对应的数据,就可以执行任意代码。但是sign函数的栈太低,不能依靠其他函数直接来控制,这里在IDA的伪代码里看不出来,就直接看汇编。 在polish函数中,此处存在栈不平衡的问题 在c
阅读更多...
buuctf babyfengshui_33c3_2016
这是四个主要的函数: add函数: add函数的输入部分: 同时,这也是update函数,其实这个函数是有溢出的漏洞的,它对于长度的检查是有问题的,后面就会利用到这一点 delete函数: display函数: 先随意创建几个chunk,看看布局, add(0x80,"nam1",0x80,"aaaa")add(0x80,"nam2",0x80,"bbbb")add(0x80,"na
阅读更多...
【buu】babyfengshui_33c3_2016(详细题解)
目录 前言题解完整脚本总结 前言 这应该是到目前为止理解的最透彻的堆题了 题解 32位的程序,开了 Canary, Nx 保护 先放进IDA看看 又是个堆题,常规流程 先看 add 函数 首先申请了description的 chunk ,接着又申请了一个0x80大小的 chunk 然后将 description的 chunk 指针 放到第二个 chunk 中, 接着是
阅读更多...
babyfengshui_33c3_2016
babyfengshui_33c3_2016 使用checksec查看: 开启了Canary和栈不可执行,看题目像是一道heap题目。 放进IDA中查看: void __cdecl __noreturn main(){char v0; // [esp+3h] [ebp-15h]int v1; // [esp+4h] [ebp-14h]size_t v2; // [esp+8h] [ebp
阅读更多...
BUUCTF pwn babyfengshui_33c3_2016(简单堆)
0x01 文件分析 0x02 运行 程序提供了几个简单的功能,增删改查都有。运行的时候程序有定时机制,可以用IDA的patch功能修改二进制指令,消除定时。 0x03 静态分析 主函数: void __cdecl __noreturn main(){char v0; // [esp+3h] [ebp-15h]int v1; // [esp+4h] [ebp-14h]si
阅读更多...
[BUUCTF]PWN——babyfengshui_33c3_2016
babyfengshui_33c3_2016 附件 步骤: 例行检查,32位程序,开启了cannary和nx 本地运行一下看看大概的情况,熟悉的堆的菜单布局 32位ida载入,看main函数 add update delete display 先随便申请几个堆,看一下布局 add(0x80, 'name1', 0x80, 'aaa')add(0x80, 'name2', 0x80
阅读更多...
babyfengshui_33c3_2016的wp
这是个相当好的堆题 add函数 可以看出这是个结构体 struct Node{char * description;char name[0x7C];} s便是description的空间地址,而v2则是结构体的空间。 delete函数 display update 这里限制了输入的长度 对于chunk0来说,就是0x80c008+输入长度是否大于0x804c08c,但是,有一个问
阅读更多...
babyfengshui_33c3_2016[堆溢出]
未来的你 = 你的热情 + 你的努力 + 那么微不足道的天赋 其实做pwn题我感觉都是只可意会,但并非不可言传,只是说了感觉和说废话一样,没有什么实质性的作用,最最重要的是要自己多去操作调试,pwn多了也就那样吧!但是最核心的永远是你coding的能力!虽然在干着逆向的事,但是coding的能力决定了你的高度! ----小白感悟 这道题问题出现在更新的时候边界的判断方法有问题,
阅读更多...
babyfengshui_33c3_2016 -- house of spirit
本题主要就是看懂一条判断溢出的if语句 结构体是怎么看出来的 代码上看 struct{char *text;char name[124];} 从内存上看 思路 step4 的关于408哪里来的 看内存地址,计算chunk3的content到chunk1的struct即可 exp from pwn import *p = remote('node3.b
阅读更多...
从babyfengshui_33c3_2016中提升抽象能力
直接分析WP: Add(0x80, 0x80, 'qin')Add(0x80, 0x80, 'qin')Add(0x8, 0x8, '/bin/sh\x00')Del(0)#注意堆块块首的长度Add(0x100, 0x19c, "a"*0x198+p32(elf.got['free']))Dis(1)p.recvuntil("description: ")free_addr = u
阅读更多...