starrycan的pwn随笔——Linux保护机制与基本环境搭建

news/2025/2/27 23:10:12/文章来源:https://www.cnblogs.com/starrycan/p/18563805

一.linux下的所有保护机制

0x01 为什么要有保护机制

学校需要大门来禁止外来人员的进入,需要规章制度来约束学生,事在人为,而我们的linux的最核心的代码也由人写出也需要些规定来促使程序的正常运行,其中非常中重要的部分就是内存地址的记录,堆栈空间的正常开辟和清理

0x02 Linux下常见的保护机制

相比与window或者其他大家目前知道的系统,Linux操作系统的保护机制是十分简单的有

1.canary——堆栈空间的警报器

2.NX——不可执行

3.PIE和ALR——地址随机化

4.RELRO——延迟绑定机制的保护

0x03 笼中鸟——CANARY

1.Canary来源

canary中文翻译就是金丝雀,来源是之前科技不发达时,矿工会在下井作业时带一个金丝雀,用来判断地下环境有没有煤气之类的毒气泄漏,金丝雀没事,大家继续干活;金丝雀如果死了,大家赶紧跑,

canary的作用就如同他引用的一样,用来判断程序的执行环境在linux中,主要是针对检测栈溢出。

2.具体的Canary

canary是一个开头字节为|x00的一段长度为八个字节的随机数,这个随机数本体存放于fs段偏移为0x28的区域

这里要说明8个字节的随机数是一个2的62次方的数字的了,比long 数据类型的字节还要长

在每次函数调用中,程序都会将这段随机数存放于栈底,每次运行结束返回时都会将这一随机数与他的本体进行比对,

这里可以类比以下防伪标

如果这个值被改变,则意味着发生了栈溢出,程序直接退出,没有改变的话程序继续执行。

3.程序中的canary

上文中已经说到了,canary具体存在偏移为0x28的区域 那么我们以后在看一些相关的题目时,我们便可以把存在0x28的地方认为为canary

0x04 NX

1.什么是NX

NX意思就是Not Executable,开启这个保护后,程序中的堆、栈、bss段等等可写的段就不可以执行

也就是对一些可输入,可能出现错误的地方都给禁止

2.NX的意义

这就意味着如果开启了NX保护,通常情况下我们就不能执行我们自己编写的shellcode.

绕过的方式通常是用mprotect函数来改写段的权限,nx保护对于rop或者劫持got表利用方式不影响。

0x05 PIE和ASLR

1.什么是PIE和ALR

在我们编写ROP或者shellcode时,有一个问题是绕不开的,那就是找到函数地址
PIE指的就是程序内存加载基地址随机化,意味着我们不能一下子确定程序的基地址
ASLR与其大同小异,ASLR是程序运行动态链接库、栈等地址随机化。

两者之间的关系类似于之前 写过的got表和plt表,两者之间有关系但是绝对不是一个东西

PLE是管ELF文件的,而ASLR是针对系统内部的栈堆空间针对系统的

2.PLE和ASLR的意义

通常来说,CTF中的PWN题与这两个保护打交道的次数最多
绕过方式就是泄露函数地址,然后通过函数的偏移来确定基地址,

0x06 RELRO

1.什么是RELRO

这个保护主要针对的是延迟绑定机制,意思就是说got表这种和函数动态链接相关的内存地址,对于用户是只读的。

2.RELRO的意义

开启了这个保护,意意味着我们不能劫持got表中的函数指针

二.pwn基本环境搭建

一切东西都需要实践,和我们学习语言过程中需要编译一样,学习pwn也需要安装很多环境这个过程可能比较困难,还是那句话 逢山开路,遇水架桥

1.安装环境

以下是我的安装步骤和准备

1.安装虚拟机vm 与乌班图

这里我采用20.04版本 也就是20年4月发布的版本

这里解释一下,采用乌班图20.04是已经测试出来比较好用,稳定的系统和版本 如果是其他系统以后会存在这样或者那样的问题,俗话说的好,听人劝 吃饱饭

虚拟机官网下载地址:(https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion)

访问网址后我们,我们点击就可以下载了,正版软件下载需要口令 大家可以网上寻找

乌班图镜像 如果在官网下载会十分缓慢,这里推荐清华镜像源网址

镜像源下载地址Index of /ubuntu-releases/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

很多东西都在网站上写的 那些说找不到的同学建议多背背单词

2.安装好乌班图之后 我们要系统进行一些简单的设置

这里记录一下我遇到的问题

A.在开始安装系统界面会发现这时因为分变率问题 无法点击继续安装

这时候我们退出到桌面 右键点击显示设置然后,调整分辨率就可以解决问题了

2.安装一些必备的工具

1.安装net-tools工具

系统是非常简陋的也是一个非常原始的状态 我们输入ifconfig发无法显示ip地址 我们就可以通过net-tools来查看本机的ip地址

我们可以输入sudo apt install net-tools 指令安装工具 这样就可以正常查看ip地址了

2.安装vim 编辑器

sudo apt install vim 安装之后我们就可以采用vi 模式对文本进行编辑

3.安装gedit工具

sudo apt install gedit

这个工具也是一个十分常用的文本编译工具 在下面的换源中将会有用

4.安装git工具 方便我们以后从代码托管平台下载代码

sudo apt install git

5.换源

所谓换源 就是把Linux中默认下载源从国外切换到国内 因为我们在国内,无法下载软件

1.输入 gedit /etc/apt/sources.lit

注意:这个插件有一个小bug 第一次输入之后无法正常运行 我们可以先输入ctrl+c 终止程序

然后再次运行就可以了 运行成功后效果如下

2.访问清华源网址

我们将20.04-16.04的代码都复制到这个文本文件中 并且保存

ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

6.安装gcc 用来编译程序

sudo apt install gcc
apt install gcc-multilib

7.安装python

python在我们以后的编写exp的过程中十分重要

这里我们需要安装python2 和python3 两个版本都要安装

sudo apt install python2

sudo apt install python3

一定要先安装python2 然后安装python3

8.安装ipython 插件

ipython是基python第三方库的一些常用插件 可以通过以下两条命令安装

sudo apt install ipython

sudo apt install ipython3

安装好之后我们通过ipython命令查看安装情况

安装好之后我们通过ipython3命令来查看安装情况

9.安装pip插件

sudo apt install python3-pip

sudo apt install curl 安装curl 插件

curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py 通过插件安装pip插件

sudo python2 get-pip.p

10.安装zsh插件 以及oh my zsh 插件

我是参考的这篇文章 Zsh 安装与配置,使用 Oh-My-Zsh 美化终端 | Leehow的小站

sudo apt install zsh zsh是针对系统命令行的命令

sh -c "$(curl -fsSL https://gitee.com/pocmon/ohmyzsh/raw/master/tools/install.sh)"

通过curl 插件安装oh my zsh 插件

安装这个插件之后我们的命令行就会变得美化

要想生效我们还把zsh设置为默认shell 输入以下指令

chsh -s /bin/zsh

chsh -s /bin/zsh

11.安装 oh-my-zsh 插件

zsh-autosuggestions ,见文知意 自动建议的意思就是当我们写出一些命令时 系统会帮我们补全 效果如下图

zsh-syntax-highlighting是一个命令语法校验插件,在输入命令的过程中,若指令不合法,则指令显示为红色,若指令合法就会显示为绿色。效果如下:

12.编辑 ~ /.zshrc 添加插件

lugins=( # other plugins...

​ zsh-autosuggestions

​ zsh-syntax-highlighting

​ extract )

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/839476.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Java+SpringBoot+Mysql在线简单拍卖竞价拍卖竞拍系统功能设计与实现一

超级管理员:系统管理、用户管理、拍卖者管理、拍卖商品管理等。 普通用户:注册登录、个人信息管理(个人资料、密码修改等)、竞价管理、评价等。 企业用户:注册登录、发布竞拍、竞拍管理等。 运行环境:windows/Linux均可、jdk1.8、mysql5.7、redis3.0、idea/eclipse均可。…

CTFWeb篇05-RCE

RCE漏洞 简介RCE(remote code/command execute) 远程代码/命令执行漏洞 RCE漏洞是两个漏洞:代码执行漏洞 # 针对后端语言! 命令执行漏洞 # 针对系统!产生原因 在 Web应用中有时候程序员为了考虑灵活性、简洁性,会在代码调用代码或命令执行函数去处理。比如当应用在调用一些能…

优化注意力层提升 Transformer 模型效率:通过改进注意力机制降低机器学习成本

Transformer 架构由 Vaswani 等人在 2017 年发表的里程碑式论文《Attention Is All You Need》中首次提出,如今已被广泛认为是过去十年间最具开创性的科学突破之一。注意力机制是 Transformer 的核心创新,它为人工智能模型提供了一种全新的方法,使模型能够根据具体任务的需求…

hash长度拓展攻击

因为hash生成机制,我们可以人为在明文中加入冗余数据,使得加密链多出一节(可控),使得当我们知道倒数第二节的数据时可以控制最终的md5值如同MD5算法那般分组后与向量运算的流程被统称为Merkle–Damgrd结构。 而同样使用此结构的HASH算法还有:SHA1、SHA2等以md5算法为例子…

Logisim-017-CRC解码

电路文件所在 电路/2-data.circ 中的 CRC解码1、其中[转换电路]在2-data.circ里面 【转换电路】的原理是: 余数和出错位数的关系是个映射关系,可以通过转换电路,转换成【循环左移电路】所需要左移的位数 可以用真值表生成,生成时,r5 r4 r3 r2 r1 系统自带的有,先将s4 s3 …

Redmi Pad SE刷机踩坑记录/类原生刷机Root教程

前言 刷机适合作为爱好,刷机只是手段而不是目的,不建议花过多时间在上面。 本文以Redmi Pad SE为例,较新的小米机型应该都差不多。 准备解BL锁 退出账号(比如小米和谷歌) 备份资料线刷 在谈线刷之前,我们说一说为何要线刷底包。 多的不说什么,从文件体积上,线刷包要比卡…

人工智能之深度学习基础——反向传播(Backpropagation)

反向传播(Backpropagation) 反向传播是神经网络的核心算法之一,用于通过误差反传调整网络参数,从而最小化损失函数。它是一种基于链式法则的高效梯度计算方法,是训练神经网络的关键步骤。 1. 反向传播的基本步骤 1.1 前向传播 在前向传播过程中,输入数据从输入层经过隐藏…

【Azure Redis】部署在AKS中的应用,连接Redis高频率出现timeout问题

查看Redis状态,没有任何异常,服务没有更新,Service Load, CPU, Memory, Connect等指标均正常。在排除Redis端问题后,转向了AKS中。开始调查AKS的网络状态。最终发现每次Redis客户端出现超时问题时,几乎都对应了AKS NAT Gateway的更新事件,而Redis服务端没有任何异常。…

20222402 2024-2025-1 《网络与系统攻防技术》实验六实验报告

1.实验内容 1.1本周学习内容 常见的网络安全协议包括SSL/TLS等。 网络安全协议攻击手段 DNS欺骗攻击:攻击者冒充域名服务器,将查询的IP地址设为攻击者的IP地址,从而诱骗用户访问恶意网站或下载恶意软件。 ARP欺骗攻击:分为对路由器ARP表的欺骗和对内网PC的网关欺骗,通过截…

谈一类计数DP——DP套DP

谈一类计数dp——dp套dp 一、dp套dp的定义 dp套dp就是一种将dp的值存入另一个dp的状态,而外层另作一个dp去取得记录这种状态的方案数。 二、dp套dp的搜索表征 对于一般的计数dp而言,其搜索形如: void DFS(int x){if(x==n+1)return void(ans+=Check());for(int i=1;i<=m;i…

AI翻唱神器,一键用你喜欢的歌手翻唱他人的曲目(附下载链接)

最近,“AI孙燕姿”翻唱众多明星的歌曲在各大网络平台上走红,其作品不仅累积上千万的播放量,在科技圈和音乐圈也都引发了热议,歌手孙燕姿在社交平台发文回应称:人类无法超越AI技术已指日可待,凡事皆有可能,凡事皆无所谓。伴随歌迷的呼声,“AI周杰伦”“AI陈奕迅”等一众…

SPI总线学习笔记

1、SPI的定义以及特点 SPI是串行外设接口(Serial Peripheral Interface)的缩写。是 Motorola 公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。 1):高速、同步、全双工、非差分、总线式 2):主从机通信模式 通信简单,速率快 2、通信协议介绍 SPI具…