09 2019 档案
摘要:[TOC] 程序基本信息 32位动态链接程序,开启了数据段不可执行以及栈溢出保护 程序漏洞 在函数中sub_80487fa中有一个格式化字符串漏洞和read函数栈溢出漏洞 整体思路 首先不用说,肯定得先想办法栈溢出,溢出函数我们已经找到,接下来的问题就是得泄露出canary的值,从而绕过栈溢出保护。
阅读全文
摘要:[TOC] 程序基本信息 64位动态链接程序,开启了栈溢出和数据段不可执行保护 程序漏洞 read函数很明显的栈溢出漏洞 整体思路 由于题目给了libc,我们可以使用one_gadget获得gadget在libc中的偏移,通过泄露其他函数库的偏移计算gadget在内存中的位置。由于程序中有栈溢出保护
阅读全文
摘要:[TOC] 程序基本信息 程序防护全开,shellcode修改got表等方法都不太可行,同时pie开启也使程序代码随机化了。 程序漏洞 这是一个发推特的程序,具体功能不在这里细说,这个程序有两个漏洞: 一个是存在在功能1中的格式化字符串漏洞,在函数sub_55D83D2C4F00中 通过分析可以发现
阅读全文
摘要:#寄存器 1、查看寄存器 2、查看所有寄存器 3、查看某个寄存器 4、修改寄存器的值 #内存 1、修改内存值 2、搜索内存 #peda插件命令 1、显示在调用指令处停止时传递给函数的参数 2、显示/设置gdb的aslr设置 3、显示特定内存范围内的所有ROP gadgets 4、从调试的elf文件获
阅读全文
摘要:GCC基本命令 gcc[选项][文件名] + E:仅执行编译预处理(.c .i) + S:将c代码转换成汇编代码(.i .s) + c:仅执行编译操作,不进行连接操作(.s .o) + o:指定生成的输出文件 + I(大写i):指定头文件目录 + l:指定程序要来链接的库 + L:指定库文件所在的目
阅读全文
摘要:[TOC] 程序基本信息 可以看到开启了栈不可执行和got表不可写保护。 程序溢出点 在函数sub_400AF7中,v8可以读入0x12C个字节,同时if判断中对v8进行字节截断,所以我们可以输入如0x101个字符,在保证能够溢出到返回地址的同时,v8字节截断后的0x01又能够通过if判断,然后通过
阅读全文
摘要:[TOC] 程序基本信息 我们可以看到这是一个64程序,没有保护开启。 程序溢出点 gets函数可以读取无限字符,存在栈溢出。 接下来我们测测需要多少字符长度可以溢出。 我们可以直接从ida上看到 变量s在栈上[bp Fh]位置,也就是说我们只能输入(Fh + 8)(覆盖rbp需要8个字节)的字节就
阅读全文