checksec:
图_1
图_2
命令概述:checksec [./filename]是检查文件的保护模式.
图_1和图_2演示是两种极端的情况图,图_1是全都有保护,图_2是全都没有保护,接下来对每条进行讲解和分析.
Arch:程序的架构,图中指出文件是amd64(也就是俗称的x86-64架构),并且是小端储存。ps:i386架构则是指明程序是32位的,具体参考amd和intel的历史故事.
RELRO:其作用是禁止.GOT.PLT表和其他一些相关内存的读和写。.GOT.PLT表和.PLT表的作用请参考博客。
Stack:栈溢出保护,由于栈溢出攻击的其中一个实现方法就是通过覆盖栈中的返回的地址,所以栈溢出保护的原理就是在执行前就将一个特殊的值压入栈中(计算机界称之为金丝雀),并且这个特殊的值是随机的,攻击者一开始是不知道的(还是有办法知道的),然后再函数返回前校验该值是否改变,改变了程序就会异常终止。
NX:也称作DEP,通俗的说就是可写和可执行的权限不同时存在,所以有NX保护的程序,可以写进shellcode的部分不能执行,可以执行的部分呢,它又不能写入shellcode或者说是修改。
PIE:目的是让可执行程序的地址在每次运行都随机化加载,从而使得程序内部的结构是未知的。
asm
命令概述:汇编和反汇编代码的实用指令
将汇编指令转化为16进制数:
asm和shellcraft模块的配合使用,将输出shellcode的十六进制数(很常用的):
图_1:
图_2:
context
命令概述:设置运行时变量
dfdfdfd
log_level
context.log_level=“debug”
脚本在执行时就会输出debug的信息,你可以通过观察这些信息查找哪步出错了