zoukankan      html  css  js  c++  java
  • 20155328 《信息安全系统设计基础》第六周 课堂提交补充

    20155328 《信息安全系统设计基础》第六周 课堂提交补充

    第六周课上测试-3

    编写一个程序w0603,运行以下代码:

    short int v=-学号后四位;
    unsigned short uv=(unsigned short)v;
    printf("v=%d,uv=%u
    ",v,uv);
    
    

    在第3行设置断点用gdb调试,用p/x v,p/x uv查看变量的值,分析p/x v,p/x uv与程序运行结果的不同与联系。

    gdb中调试如下:

    程序运行如下:

    可以看到gdb中用p/x显示的值为v=uv=0xeb30,而运行结果为v=-5328,uv=60208.

    分析:%d打印的是原数值,%u打印时将有符号数化作无符号数,符号位变成数值位。

    第六周课上测试-5

    通过输入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;
    }
    

    使用gdb跟踪汇编代码,在纸上画出f中每一条语句引起的eip(rip),ebp(rbp),esp(rsb),eax(rax)的值和栈的变化情况。

    Step1:进入gdb模式,在main函数处设置行断点,run后输入disassemble,得到汇编代码:

    Step2:

    输入i r(info registers),然后用x/4a SP的值看栈的值:

    Step3:

    输入命令display/i $pc,符号=>后跟着的是系统正在执行的命令,输入si,用i r查看这条命令执行结束后寄存器的值的变化,然后用x/4a SP的值看栈的值:

    之后一直重复si i r x/4a SP的值 直到结束

    缓冲区溢出漏洞实验

    Step1:输入命令安装一些用于编译32位C程序的东西:

    sudo apt-get update
    sudo apt-get install lib32z1 libc6-dev-i386
    sudo apt-get install lib32readline-gplv2-dev
    

    Step2:输入“/bin/bash”使用bash:

    Step3:在/tmp目录下撰写stack.c文件。编译该程序,并设置SET-UID。

    Step4:在/tmp目录下编写exploit.c文件。输入gdb命令:

    Step5:找到str起始地址,在下一行处设置断点,run,使用i r查看exp的值。编译exploit程序。先运行攻击程序exploit,再运行漏洞程序stack,观察结果:

  • 相关阅读:
    MySQL事务处理2
    servlet过滤器配置白名单、黑名单
    Freemarker生成静态代码实例
    FreeMarker---数据类型
    创建第一个freemarker
    JDBC编程之优化
    关于ComponentName的使用
    launchMode使用详解
    android开发之使用上下文菜单
    android开发之shape详解
  • 原文地址:https://www.cnblogs.com/zyqzyq/p/7751533.html
Copyright © 2011-2022 走看看