随笔分类 - pwn
摘要:首先先来看一下程序的保护情况 这里got表可改,没有开地址随机 接着看一下ida逻辑 很直接,只有一个main函数,一点点分析这段代码 buf[1] = __readfsqword(0x28u); init_func(argc, argv, envp); buf[0] = 'gfedcba'; v5
阅读全文
摘要:首先查一下程序的保护情况 保护全关!!! 然后看ida逻辑 ida的结果很简洁,只有一段汇编代码,我们再来看看nc情况 现在我们来分析一下汇编代码 mov ecx, esp ; addr.text:08048089 B2 14 mov dl, 14h ; len.text:0804808B B3 0
阅读全文
摘要:照例检查程序保护情况 堆栈不可执行,再导入ida看一下代码逻辑 如上图此处代码有格式化字符串漏洞 先找出偏移 可以发现偏移是8 那么我们可以利用printf泄露出libc地址,如何修改printf_got表为system的地址,然后再传入/bin/sh就可以getshell exp: from pw
阅读全文
摘要:好好说话之Unsorted Bin Attack_unsortedbin attack-CSDN博客
阅读全文
摘要:先来看一下程序的保护情况 堆栈不可执行,而且还开了canary 看一下ida 又是经典菜单题,接着分析每一个函数功能就行 touch函数:有一个数组存malloc出来的地址 delete函数:删除堆中的数据,不存在uaf漏洞 show函数:打印堆中数据 take_note函数:向堆中写数据 分析到这
阅读全文
摘要:这道题先来看一下ida 这道题的代码逻辑很简单,首先关闭了标准输出和错误输出 那可以将标准输出重定向到标准输入 exec 1>&0 是一种Shell命令行中的重定向语法,用于将标准输出(文件描述符1)重定向到标准输入(文件描述符0)。 在Linux Shell中,每个进程都有三个默认的标准文件描述符
阅读全文
摘要:程序保护情况检查 32位程序,堆栈不可执行 主函数: 左边又是一堆函数,file看一下 发现是静态链接,那ret2libc不用考虑了,接着看一下有没有int 80 那可以考虑利用rop链调用execve函数,用系统调用的函数参数是存在寄存器中的,但是本程序找不到/bin/sh的字符串,可以利用rea
阅读全文
摘要:先检查程序的保护情况 32位程序,堆栈不可执行 看ida 经典的菜单题,根据题目的uaf,判断该题有uaf漏洞,看一下delete函数 两次free没置空指针,确实存在uaf漏洞,再看一下add函数和print函数 add函数这里,就是创建了两个堆块,第一个堆块八字节数据中,前四个字节存着puts函
阅读全文
摘要:先检查程序的保护情况 32位。堆栈不可执行,ida看一下代码逻辑 存在gets函数的栈溢出,偏移是0xc,然后再根据左边一堆函数,判断这个程序是静态编译,那这里的libc的打法就可以不用考虑,这里使用ROPgadget --binary rop --ropchain进行需要rop链 然后加上偏移就可
阅读全文
摘要:首先查看一下附件的保护情况 可以看到,got表是可修改的状态 接着看主函数的逻辑 非常典型的菜单题,接着分析每一个函数的作用 unsigned __int64 create_heap() { int i; // [rsp+4h] [rbp-1Ch] size_t size; // [rsp+8h]
阅读全文
摘要:拿到程序,先查一下保护状态 没开pie,接着看主函数代码逻辑 看到这里,因为程序开了canary,本程序没有可以泄露canary的方法,所以普通的栈溢出方法肯定打不了,这里可以考虑一下smash stack Stack smash 在程序加了 canary 保护之后,如果我们读取的 buffer 覆
阅读全文
摘要:我们先看看程序的保护的情况 因为题目提示了orw,我们可以沙箱检测一下 可以发现是禁用的execve函数的,接着看函数逻辑 这里格式化字符串漏洞可以泄露canary和puts函数地址,先确定一下参数位置 可以发现参数是在第六个位置,接下来就是构造ROP,调用read函数读取shellcode到mma
阅读全文
摘要:还是先看一下保护情况 开了canary,接着看主函数逻辑 看到这里的代码逻辑,我一开始是想通过printf泄露出canary的值,然后再用ret2libc来打,但是我发现这个libc不好泄露,一般的泄露的思路都是构造ROP,通过puts函数泄露出puts的got表内容,但是我在寻找rdi这个gadg
阅读全文