• 20155231 cho3 课下作业


    20155231 cho3 课下作业

    4

    1 通过输入gcc -S -o main.s main.c 将下面c程序”week0603学号.c“编译成汇编代码
    int g(int x){
    return x+3;
    }
    int f(int x){
    int i = 学号后两位;
    return g(x)+i;
    }
    int main(void){
    return f(8)+1;
    }

    1. 删除汇编代码中 . 开关的代码,提交f 函数的汇编代码截图,图中用矩形标出函数栈帧的形成和销毁的代码

    删除后的代码:

    
    g:
    
    	
    	pushq	%rbp
    	
    	movq	%rsp, %rbp
    	
    	movl	%edi, -4(%rbp)
    	movl	-4(%rbp), %eax
    	addl	$3, %eax
    	popq	%rbp
    	
    	ret
    	
    
    f:
    
    
    	pushq	%rbp
    
    	movq	%rsp, %rbp
    
    	subq	$24, %rsp
    	movl	%edi, -20(%rbp)
    	movl	$13, -4(%rbp)
    	movl	-20(%rbp), %eax
    	movl	%eax, %edi
    	call	g
    	movl	%eax, %edx
    	movl	-4(%rbp), %eax
    	addl	%edx, %eax
    	leave
    
    	ret
    
    
    main:
    
    	pushq	%rbp
    
    	movq	%rsp, %rbp
    
    
    	movl	$8, %edi
    	call	f
    	addl	$1, %eax
    	leave
    
    	ret
    
    
    

    5

    1 通过输入gcc -S -o main.s main.c 将下面c程序”week0603学号.c“编译成汇编代码
    int g(int x){
    return x+3;
    }
    int f(int x){
    int i = 学号后两位;
    return g(x)+i;
    }
    int main(void){
    return f(8)+1;
    }

    1. 参考,使用gdb跟踪汇编代码,在纸上画出f中每一条语句引起的eip(rip),ebp(rbp),esp(rsb),eax(rax)的值和栈的变化情况。提交照片,要有学号信息。

    缓冲区溢出漏洞实验

    • 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。
      遇到的问题:

    • 在虚拟机上准备环境时总是失败,就用了实验楼环境做。

    • 根据实验步骤安装环境,写入代码。

    • 首次实验失败,重新gdb计算shellcode地址。

    • 我的shellcode的地址为: 0xffffd2a0(十六进制)+100(十进制)=0xffffd2e0(十六进制)

    • 在exploit.c文件中更改地址。

    • 实验成功。

    还学到了:GCC编译器有一种栈保护机制来阻止缓冲区溢出,所以我们在编译代码时需要用 –fno-stack-protector 关闭这种机制。
    而 -z execstack 用于允许执行栈。

  • 相关阅读:
    字符串和正则表达式
    委托和事件
    集合
    C#基础
    Pwnable中的passcode解题记录:
    DevExpress插件中GridView控件界面显示风格的保存与加载
    地区代码表(利用Hashtable实现)
    关于DevExpress插件中LookUpEdit控件的快速搜索列的定位问题
    C#实现PictureBox控件的动态添加及在每个图像左上角添加一个复选框
    Android4.4新的特性,在应用内开启透明状态栏和透明虚拟按钮。
  • 原文地址:https://www.cnblogs.com/javasyn/p/7749751.html
Copyright © 2020-2023  润新知