教材学习内容总结
在 Linux 系统中,带 '-d' 命令行标志的程序 OBJDUMP(表示“object dump”)可以充当这个角色。
书上的例子
$objdump -d mstore.o
(反)汇编代码的数据格式见书 P119,重点记忆不同的大小。
寄存器的用途见书 P120。
寻址方式见书P121。
mov(b字节,w字,l双子,q四字)。
pushq,popq操作的均为四字。
SAL和SHL的效果是一样的。
联合,书P186
理解函数调用栈帧的概念,并能用GDB进行调试
教材学习中的问题和解决过程
6.下面的跳转指令与ZF有关的是(ABD)
A .
jmp
B .
je
C .
js
D .
ja
E .
jb
F .
jbe
解析:课本p139图3-15
10.假设%rax中的值为x, %rcx中的值为y,关于leaq指令,下面正确的(AC)
A .
leaq 6(%rax), %rdx; %rdx中值为6+x
B .
leaq 6(%rax), %rdx; %rdx中值为6x
C .
leaq 7(%rax, %rax,8), %rdx; %rdx中值为9x+7
D .
leaq 7(%rax, %rax,8), %rdx; %rdx中值为63x
E .
leaq 7(%rax, %rax,8), %rdx; %rdx中值为15x
实验截图:
实验原理
缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。
一般情况下,缓冲区溢出会造成程序崩溃,在程序中,溢出的数据覆盖了返回地址。而如果覆盖返回地址的数据是另一个地址,那么程序就会跳转到该地址,如果该地址存放的是一段精心设计的代码用于实现其他功能,这段代码就是 shellcode。
实验目的
利用专门写出来的系统堆栈漏洞程序stack.c文件作为引发系统堆栈漏洞的程序,运行此程序会导致Linux系统的堆栈出现溢出。再运行设计好的攻击程序exploit.c文件,输入获取Linux当前用户名的指令,就可以窃取到当前用户的密码。
实验感想
如果要用本次实验的方法来进行攻击,其实还是比较麻烦的,而且这种攻击方式要求能够对被攻击的Linux系统进行操作,因而这种攻击方式在实际中可能并不是那么方便。