初学pwn的课程第一课
pwn的攻击基础原理

我的理解是主要通过分析主文件,然后获得有用信息,通过exploit对服务器输入指定的payload数据,获取服务器的shell,就是进入服务器的终端,获取服务器的控制权,对服务器进行操作,从而获取flag。
二进制基础
程序的编译和链接:以c语言为例,主要是我只会c语言,编译主要是通过将c语言代码生成汇编代码,但是计算机并不会处理这些代码,因为电脑并不认识这些代码,这时候我们就需要再将汇编代码链接生成计算机看得懂的代码,就是机器码(反正就是写乱码看得难受),这个机器码人是很难看懂的,但是机器能处理。
可执行文件
可执行文件就是在电脑上可以运行的文件,但在广义和狭义上又有一点不同。
广义上来说只要能在电脑上运行的就叫可执行文件,细点说就是可执行代码的文件。
狭义上说就是文件中的数据是机器码的文件。
这个需要区分开。
栈
栈(stack) 存放 参数,局部变量 等等
栈的使用:在调用函数的时候使用
我的理解是浅意上来看一个数组
深点看其实是一个存放指令的空间。

IP 地址:存放数据的地方(粉笔和粉笔盒)
寄存器 EAX,EBX:通用寄存器 ESP:栈指针寄存器(extended stack pointer),其内存放着一个指针,该指针永远指向系统栈最上面一 个栈帧的栈顶。
EBP:基址指针寄存器(extended base pointer),其内存放着一个指针,该指针永远指向系统栈最上面 一个栈帧的底部。
EIP:指令寄存器,存放的是本条执行指令的地址 指令 push:把数据压入栈中 pop:把数据弹出栈 jmp:无条件跳转 call:实际上是push 下一条执行指令的地址和jmp call后面的参数的合体 ret:和call连体,ret是pop 下一条执行指令的地址
原理:函数被调用后会产生一个栈来保存参数,局部变量和返回地址(EIP+4) 保存步骤为:参数-->返回地址-->局部变量
初学pwn的课程第一课的更多相关文章
- C语言基础课程 第一课 Linux环境配置小实战httpserver
网段我需要改成如下 10.重启网络服务 并且查看ip 11. 打开windows的浏览器数人Linux的IP地址出现REDHAT的欢迎界面 11.进入目录 12.编写一个简单的html脚本 13 ...
- Android课程---第一课
Android是一种基于Linux的开源的操作系统 主要使用于智能设备,如智能手机.平板电脑和智能电视等 由Google公司领头开发并推广,2008年推出第一个版本. 此系统最初由”安卓之父" ...
- 【SEO 决胜网络索引】 课程大纲及第一部分第一课:网络营销战略中的索引
内容简介 1.课程大纲 2.第一部分第一课: 网络营销战略中的索引 3.第一部分第二课预告: 索引是什么 课程大纲 现在是网络为王的时代,人们越来越离不开互联网: SEO(Search Engine ...
- Linux系统初学-第一课 虚拟机安装CentOS6.5以及Root密码找回
Linux系统初学第一课 虚拟机安装CentOS6.5以及Root密码找回 虚拟机安装CentOS6.5 一.安装虚拟机 1-1.安装虚拟机VMware Station,新建虚拟机,选择典型配置. 1 ...
- 初学Python(第一课)
今天整理一下关于Python初学者的基础知识部分的第一课,因为之前学习过C,所以过于基础的知识就不详细记录了. Python相对于C\C++来说,在语法方面已经很简单了:甚至对于JavaScript也 ...
- 【C++探索之旅】开宗明义+第一部分第一课:什么是C++?
内容简介 1.课程大纲 2.第一部分第一课:什么是C++? 3.第一部分第二课预告:C++编程的必要软件 开宗明义 亲爱的读者,您是否对C++感兴趣,但是C++看起来很难,或者别人对你说C++挺难的, ...
- 【Linux探索之旅】开宗明义+第一部分第一课:什么是Linux?
内容简介 1.课程大纲 2.第一部分第一课:什么是Linux? 3.第一部分第二课预告:下载Linux,免费的噢! 开宗明义 我们总听到别人说:Linux挺复杂的,是给那些追求逼格的程序员用的.咱 ...
- 【C语言探索之旅】 第三部分第一课:SDL开发游戏之安装SDL
内容简介 1.课程大纲 2.第三部分第一课: SDL开发游戏之安装SDL 3.第三部分第二课预告: SDL开发游戏之创建窗口和画布 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会 ...
- 【第一课】神奇的Context
初学Android的困惑 初学Android跳转页面的时候,往往教程里是这么写的: Intent intent = new Intent(); //MyActivity就是当前的Activity,It ...
- CodeIgniter框架入门教程——第一课 Hello World!
本文转载自:http://www.softeng.cn/?p=45 今天开始,我将在这里连载由我自己编写的<CodeIgniter框架入门教程>,首先,这篇教程的读着应该是有PHP基础的编 ...
随机推荐
- JAVA虚拟机-01-JAVA虚拟机家族简介
JAVA虚拟机家族简介 Classic VM JDK1.0发布,第一款商议的JAVA虚拟机.纯解释器方式来执行java代码的的JAVA虚拟机.如果要使用即时编译就需要外挂编译器.如果外挂了编译器,及时 ...
- Python3中的“加和”函数
技术背景 其实如果没有专门去研究python的一些内置函数的话,我们都没办法发现一些很神奇的功能,即使是我们最熟悉的python中的sum函数.不知道还有多少人,以为这只是一个只能用来做求和的函数? ...
- 【亲妈教学】配置Gzip压缩,含前后端步骤
前言 在使用 vite 进行项目打包时,默认已经帮我们做了一些优化工作,比如代码的压缩,分包等等. 除此之外,我们还有一些可选的优化策略,比如使用 CDN ,开启 Gzip 压缩等.本文会介绍在 vi ...
- ROS多机通讯
1.主机: sudo /etc/hosts 写入从机的地址和用户名: 192.168.31.14 raspi2 2.从机 sudo /etc/hosts 写入主机的地址和用户名 192.168. ...
- javaEE(网络编程、TCP、线程池优化)
网络编程 Client-Server(CS) Browser/Server(BS) 1.客户端--服务端 安装客户端 更新. 依赖PC 2.浏览器和服务端 分布式 兼容性 一站开发 网络通信: UDP ...
- vim编辑器操作指南
编辑模式(i) yy复制行 p粘贴 dd剪切 V按行选中 u撤销 ctr+r反撤销 >>往右缩进 <<往左缩进 :/...搜索指定内容 .重复上一次命令 G回到最后一行 gg回 ...
- JZOJ 100149. 一道联赛A题
\(\text{Solution}\) 一眼 \(ODT\) 为避免每次都数颜色数量,提前记录下来,每次修改更新下 \(\text{Code}\) #include <cstdio> #i ...
- JZOJ 4043. 【雅礼集训2015Kzf】洪水
题目 题解 很明显的 \(dp\) \(f_u = \min(a_u, \sum_{(u,v) \in E}f_v)\) 然后套路的设 \(g_u\) 表示不管重儿子的 \(f_u\) \(f_u = ...
- 化学式latex语法
$2 CO_2 \stackrel{光}{\underset{\text{催化剂}}{\longrightarrow}}2 Fe + 3 CO_2$ $\ce{CO2}$ $\ce{CU2+}$ $\ ...
- ABP微服务系列学习-搭建自己的微服务结构(三)
上一篇我们基础服务初步搭建完毕,接下来我们整一下认证和网关. 搭建认证服务 认证服务的话,ABP CLI生成的所有模板都包括了一个AuthServer.我们直接生成模板然后微调一下就可以直接用了. a ...