笔记是根据哔哩哔哩视频所写
2、ELF文件概述_哔哩哔哩_bilibili
第一集看过大概,很久之前安装过一些工具,所以直接从第二集开始看,遇到没有安装的工具再安装。
从今天开始入坑pwn
0.pwn的简单介绍
exploit:
用于攻击的脚本与方案。
payload:
攻击载荷,是对目标程序被劫持控制流的数据
shellcode:
调用攻击目标的shell的代码
之前听过一个课是这样解释的:
exploit:相当于火箭,payload相当于卫星。火箭把卫星发送后,就没用了,真正起作用的是卫星,payload
ctf pwn的形式
首先会给一台服务器的ip和端口
命令:
nc IP port
会获取服务器运行的程序
我们会自己写一个攻击脚本,然后运行脚本,达成攻击目的。获取服务器的shell。
通常比赛时会把服务器运行的程序的二进制文件给我们,我们通过二进制文件,找到漏洞,写攻击脚本,达成目的。
1.二进制基础
1.1程序的编译与链接
vim hello.c
#include<stdio.h>
int main(){
puts("Hello world!");
}
这是c的源代码,然后通过gcc
gcc hello.c
生成a.out
然后执行文件。
./a.out
1.2可执行文件
1.2.1什么是可执行文件:
cpu可以执行的文件。里边好像都是机器码。
广:文件中的数据是可执行代码的文件
.out\.exe\.sh\.py
狭义:
.out\.exe\.dll\.so
1.2.2可执行文件的分类
windows:PE(Portable Executable)
可执行文件:.exe
动态链接库:.dll
静态链接库:.lib
Linux:ELF(Executable and Linkable Format)
可执行程序
.out
动态链接库:
.so
静态链接库:
.a
1.3ELF文件的结构:
图片来自ELF文件基本结构 - CTF Wiki (gitee.io)
最后
好好的一张图被我给弄废了
code和data好像汇编中的东西,不确定是不是。(那个code段data段)