pwntools基本指令
checksec
查看程式開了哪些保護機制
安裝:Pwntools gdb
使用:checksec
nc / ncat
远程连线工具
使⽤ ncat 将程式在靶机连接起來,接着使用 nc 连接
使用:nc
Vim
编辑器
安裝:sudo apt install vim
Relro:Full Relro(重定位表只读) Relocation Read Only, 重定位表只读。重定位表即.got 和 .plt个表。
Stack:No Canary found(能栈溢出) 栈保护。栈溢出保护是一种缓冲区溢出攻击缓解手段。启用栈保护后,函数开始执行的时候会先往栈里插入cookie信息,当函数真正返回的时候会验证cookie信息是否合法,如果不合法就停止程序运行。攻击者在覆盖返回地址的时候往往也会将cookie信息给覆盖掉,导致栈保护检查失败而阻止shellcode的执行。在Linux中我们将cookie信息称为canary。 简单来说就是通过验证cookie,来判断执行的代码是不是恶意代码
NX: NX enable(不可执行内存) Non-Executable Memory,不可执行内存。 原理是将数据所在内存页标识为不可执行,防止因为程序运行出现溢出而使得攻击者的shellcode可能会在数据区尝试执行的情况。NX是对栈和堆的一种保护机制。实验需要关闭NX和地址随机化,否则执行shellcode时,CPU就会抛出异常,而不是去执行恶意指令。Linux系统叫做NX,Windows系统中类似的机制叫DEP(Data Execute Prevention)
PIE: PIE enable(开启ASLR 地址随机化) Address space layout randomization,地址空间布局随机化。通过将数据随机放置来防止攻击
pwntools
接收远端传回的数据
1 | interactive() : 在取得shell之后使用,直接进行交互,相当于回到shell的模式。 |
向远端发送数据
1 | send(data) : 发送数据。 |