关闭保护的方法
pie: -no-pie
Canary:-fno-stack-protector
aslr:查看:cat /proc/sys/kernel/randomize_va_space 2表示打开
关闭:echo 0>/proc/sys/kernel/randomize_va_space
NX:-z execstack
gdb使用以及插件安装
是GNU软件系统中的标准调试工具,此外GDB也是个具有移携性的调试器,经过移携需求的调修与重新编译,如今许多的类UNIX操作系统上都可以使用GDB,而现有GDB所能支持调试的编程语言有C、C++、Pascal以及Fortran。我们在调试一个elf可执行程序时,需要用到gdb以及他的一些插件来进行动态调试。
我们可以通过在命令行输入:gdb来启动gdb,但是此时gdb还没有加载目标文件,我们可以输入file<elf_name>的方式将我们所要调试的程序加载进来,此时,我们就可以调试程序了。
gdb的一些基本的命令如下:
pwndbg
pwndbg是gdb的一个插件,诞生的用途就是用来调试pwn题。在ubuntu系统下可以通过如下命令进行安装:
git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh
说明安装成功。再次打开gdb,我们就发现gdb变成了pwndbg,ipwndbg增加了许多额外功能,常用的命令如下:
pwntools
在ubuntu系统中,我们通过如下的命令来安装pwntools:
安装依赖库:
git clone https://github.com/aquynh/capstone
cd capstone
make
make install
安装pwntools:
Py3:
apt-get update
apt-get inatall python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade pwntools
Py2:
apt-get update
S apt-get install python python-pip python-dev git libssl-dev libffi-dey build-essentlal
s python2 -m pip install --upgrade pip=-20.3.4
s python2 -m pip install --upgrade pwntools
用法示例
from pwn import *
my_elf = ELF("./myelf")#加载elf文件
libc =ELF("./libc.so.6")
io=process("./myelf")#调试本地进程
Io=remote('127.0.0.1',1111)#远程
io.recvuntil("input:")#io模块,接受数据
io.sendline(p64(0xdeadbeef))#发送致据,p64为将数据打包为64位小模式
payload=asm(shellcraft,sh())*sholicodE生成
gdb.attach(io)#本地挂载gdb
io.send(payload)
io.interactive()#交互
ida使用
ida是目前最强大的二进制静态分析工具。安装完成后,会有两个主程序,一个是ida,另一个是ida64,这里ida是用于分析32位程序,ida64是用于分析64位程序。想要分析一个可执行文件,我们只需简单的将其拖入ida即可。加载完成后,映入眼帘的是一段段的汇编码还有一些函数块,右键然后选择text view,程序就会以文本的形式呈现在你面前。f5为反编译功能,按下后程序会以伪c代码的形式呈现。这样对我们分析一个没有源码的程序很有帮助。下面我将介绍ida使用的一些快捷键: