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

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

第六周课上测试-3

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

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

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

gdb中调试如下:
1065527-20171029215624664-1309866409.png

程序运行如下:
1065527-20171029215632211-754768090.png

可以看到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,得到汇编代码:
1065527-20171029215701633-130744761.png

Step2:

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

1065527-20171029215718101-5250701.png

Step3:

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

1065527-20171029215723555-202699899.png

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

1065527-20171029215729461-1562847155.jpg

缓冲区溢出漏洞实验

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命令:

1065527-20171029215747117-1734780020.png

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

转载于:https://www.cnblogs.com/zyqzyq/p/7751533.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值