pwn基础
pwn常用工具
1、IDA
是一个世界顶级的交互式反汇编工具,主要用来静态分析。
使用F5即可将汇编反编译成易于阅读的伪代码;空格键:文本,图形和反汇编窗口的切换;ESC:退到上一个操作地址;F7:单步步入;F8:单步不过;F4:运行到光标处;A:将选择信息转化成ASCII等。
2、pwntools
pwntools是python的CTF框架和漏洞利用开发库,常用的模块:
sh = process("./文件") //使用本地二进制文件创建新的进程
sh = remote('ip',port) //连接远程的服务器
sh.recvuntil('标志') //接收数据到设置的标志
sh.sendline(‘内容’) //发送一行数据
sh.interactive() //直接进行交互
3、checksec
基本使用:checksec --file=文件
RELRO
Relocation Read-Onl(RELRO)此项技术主要针对GOT改写的攻击方式,它分成两种,Partial RELRO和FULL RELRO
Partial (部分)RELRO容易受到攻击,例如攻击者可以atoi.got为system.plt进而输入/bin/sh\x00获得shell,完全RELRO使整个GOT只读,从而无法被覆盖,但这样会大大增加程序的启动时间,因为程序在启动之前需要解析所有的符号。
Stack-canary
栈溢出保护是一种缓冲区溢出攻击缓解手段,当函数存在缓冲区溢出攻击漏洞是,攻击者可以覆盖栈上的返回地址来让shellcode能够得到执行,当启用栈保护后,函数开始执行的时候先会往栈里插入类似cookie信息,当函数真正返回的时候会验证cookie信息是否合法,如果不合法就停止程序运行,攻击者在覆盖返回地址的时候往往会将cookie信息给覆盖掉,导致栈保护检车失败而阻止shellcode的执行,在linux中我们将cookie信息称为canary。
NX
NX enabled如果这个保护开启就是意味着栈中数据没有执行权限,如此一来,当攻击者在堆栈上部署自己的shellcode并触发时,智慧直接造成程序的崩溃,但是可以利用rop这种方法绕过
PIE
PTE(Position-Independent Executable,位置无关可执行文件)技术与ASLR技术类似,ASLR将程序运行时的堆栈以及共享库的加载地址随机化,而PIE及时则在编译时将程序编译为位置无关,即程序运行时各个段(如代码但等)加载的虚拟地址也是在装载时才确定,这就意味着。在PIE和ASLR同时开启的情况下,攻击者将对程序的内存布局一无所知,传统改写GOT表项也难以进行,因为攻击者不能获得程序的.got段的虚地址。若开始一般需在攻击时歇够地址信息