02 2025 档案
摘要:先检查一下保护,32位的 分析一下代码,发现buf距离ebp为0x18(24),但是read只溢出0x20(32),也就是只溢出8个字节,刚好覆盖到ret。 第一个read读取0x200到s(.bss段) 两个write会打印m1和m2,点击m1,m2查看 因为溢出不够,这时候我们可以考虑栈迁移,因
阅读全文
摘要:打开ida查看,可以看到是静态编译,所以无法常规用ret2libc 此时可以用最简单的方法系统调用 首先ida上面的偏移量是错误的,我们手动用gdb算一下距离ebp为0x1c 因为要实现execve("/bin/sh",0,0) 找int 0x80,eax,ebx,ecx,edx 因为程序里面没有b
阅读全文
摘要:保护只打开了NX,ida打开发现左边有很多函数,是静态编译,无法泄露libc 看一下main函数,挺简单的,只有个栈溢出 这题可以使用ROPgadget工具,终端上输入 ROPgadget --binary rop --ropchain 可以直接生成rop链 不懂的话可以问一下ai是什么意思 这段代
阅读全文
摘要:查看保护,开启了pie,没开NX保护,可以往栈上写shellcode 打开ida反汇编发现不行 那就直接看汇编,栈的大小是410,read只读入了400,无法造成栈溢出 不过也没关系,读入了0x400,已经可以读入shellcode了。直接往栈上写就行 exp from pwn import * p
阅读全文
摘要:首先检查一下保护,发现没有开启NX保护,说明可以往栈上写shellcode 首先要确定距离ebp的偏移,还有shellcode的地址(将ret覆盖到shellcode的地址上) 确定离ebp偏移的代码 from pwn import * io=process("./ez_pz_hackover_20
阅读全文