Full RELRO 为got表只读 程序的功能如下 1是read函数,存在栈溢出,2是puts函数,可以泄露canary,3是退出 思路 :程序中插入了canary,用puts函数泄露,然后再用puts函数来泄露puts_got,用libcsearcher获得libc版本,最终getshell c ...
分类:
其他好文 时间:
2020-03-02 10:34:15
阅读次数:
95
环境 win10 vs2017 Release x86 突破GS 禁用DEP,ALSR 使用安全函数,不然会报错,要是禁用SDL,GS也会被禁掉。(反正我没搞定,不过好像也没啥影响,安全函数也阻止不了我写bug) 1.虚函数的调用 ①首先,虚函数的地址保存在虚函数表,虚函数表的地址保存在类对象前四个 ...
分类:
其他好文 时间:
2020-02-29 00:54:51
阅读次数:
76
1,栈溢出问题,主要原因:每个RDD会存储他的祖先,以便发生错误的时候,能够利用这种关系再次生成。算法类的spark程序,因为会迭代很多次,这种关系会变得很巨大,引发栈溢出问题 * 设置检查点 val sc = new SparkContext(conf) sc.setCheckpointDir(" ...
分类:
编程语言 时间:
2020-02-28 18:55:18
阅读次数:
60
1.拷贝构造函数 Line( const Line &obj); √ //常量引用 Line( Line obj); × 形参复制到实参会调用拷贝构造函数,所以会形成无休止的递归调用从而导致栈溢出。 2.运算符重载 传参类型声明为常量引用。 引用:从形参到实参就不会调用拷贝构造函数,比面无谓消耗,提 ...
分类:
其他好文 时间:
2020-02-28 01:21:41
阅读次数:
67
js是一个单线程,非阻塞,异步脚本语言 在执行栈中先进后出 (相对与函数中调用函数,单行代码执行直接出去了) 栈里面表现很慢的东西叫阻塞 slow //比如http请求 如果我们在浏览器控制台中运行'foo'函数,是否会导致堆栈溢出错误? function foo() { setTimeout(fo ...
分类:
其他好文 时间:
2020-02-24 10:04:35
阅读次数:
78
首先简要回顾一下缓冲区溢出的攻击大系: ◆栈溢出(stack smashing) 未检查输入缓冲区长度,导致数组越界,覆盖栈中局部变量空间之上的栈桢指针%ebp以及函数返回地址retaddr,当函数返回执行ret指令时,retaddr从栈中弹出,作为下一条指令的地址赋给%eip寄存器,继而改变原程序 ...
分类:
其他好文 时间:
2020-02-23 22:35:56
阅读次数:
91
常规检查 题目分析 两个 read 函数,第一个 buf 只能栈溢出至 ret ,第二个 bank 在 bss 段中,所以思路很明显,要栈迁移到 bss 段中 有 puts 函数和 read 函数,所以我们可以先用 puts 函数泄露出 libc 地址,然后用 read 函数写入 有万能函数,能让我 ...
分类:
其他好文 时间:
2020-02-23 09:58:30
阅读次数:
143
递归 自己调用自己,但是要分解它的参数 def fact(n): if n == 0: return 1 else: return n*fact(n-1) print(fact(5)) # 120 1、递归必须包含一个基本出口(base case),否则会无限递归,最终导致栈溢出.比如这里就是n== ...
分类:
编程语言 时间:
2020-02-22 14:10:53
阅读次数:
89
程序的虚拟地址空间分为多个区域,栈是其中地址较高的一个区域。 栈可以存放函数参数、局部变量、局部数组等作用范围在函数内部的数据,它的作用就是完成函数的调用。 栈的概念 栈溢出(Stack Overflow) 对于每个程序来说,栈能使用的内存是有限的,一般是1M 8M,这在编译时就已经决定了,程序运行 ...
分类:
其他好文 时间:
2020-02-21 22:39:57
阅读次数:
76
通常情况下栈溢出可能造成的后果有两种,一类是本地提权另一类则是远程执行任意命令,通常C/C++并没有提供智能化检查用户输入是否合法的功能,同时程序编写人员在编写代码时也很难始终检查栈是否会发生溢出,这就给恶意代码的溢出提供了的条件,利用溢出,攻击者可以控制程序的执行流,从而控制程序的执行过程并实施恶 ...
分类:
其他好文 时间:
2020-02-21 16:07:07
阅读次数:
123