首页 > 其他分享 >pwn基础(一)环境搭建

pwn基础(一)环境搭建

时间:2024-09-06 10:54:32浏览次数:10  
标签:漏动 环境 Pwn 缓冲区 内存 pwn 溢出 搭建

pwn基础(一)环境搭建_数据

"Pwn"是一个黑可语法的俚语词,源自动词"own",表示攻破或控制设备或系统。它常用于描述成功利用系统或应用程序的漏动,绕过安全措施并获取系统权限的行为。在网络安全领域,"pwn"通常与二进制漏动利用相关,涉及分析程序、发现漏动并构造特定的输入或代码来触发这些漏动,从而实现对目标系统的控制。

"Pwn"这个词在不同的上下文中有不同的含义。在计算机科学和技术领域,它通常指的是通过利用软件缺陷(如缓冲区溢出、格式化字符串漏动等)来获得对计算机系统的控制权。在网络安全竞赛(如Capture The Flag, CTF)中,“pwn”题目通常涉及二进制漏动利用,测试参赛者在计算机系统和软件漏动方面的知识和技能。

总的来说,“pwn”表示对目标系统的完全控制或击败,强调了黑可或公鸡者在公鸡中的优势和成功。然而,需要注意的是,“Pwn”是一个非正式的术语,通常不在正式的技术文档或讨论中使用。

pwn=缓冲区溢出吗?

"Pwn"并不是直接等于"缓冲区溢出",但缓冲区溢出是实现pwn的一种常见手段。

"Pwn"是一个广义的概念,它指的是通过利用软件或系统的漏动来获得对系统的控制权,可以涉及到多种类型的漏动利用,包括但不限于缓冲区溢出、格式化字符串漏动、整数溢出、未初始化的变量、竞争条件等。

缓冲区溢出是一种特定的漏动利用方式,它通过向程序的缓冲区写入超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,造成程序崩溃或使程序转而执行其它指令,以达到公鸡的目的。缓冲区溢出是"Pwn"中常用的一种技术,但"Pwn"不仅仅局限于缓冲区溢出,还包括其他类型的漏动利用。

因此,可以说缓冲区溢出是实现"Pwn"的一种手段,但"Pwn"本身包含了更广泛的内容。

pwn基础(一)环境搭建_数据_02

缓冲区溢出(Buffer Overflow)是指当计算机程序尝试向缓冲区(即一块连续的内存区域)写入的数据量超过了其分配的容量时,导致数据溢出到相邻的内存区域的现象。这种情况通常是由于程序员的编程错误造成的,比如没有正确地检查输入数据的长度或者没有实施边界检查。

示例讲解

让我们通过一个简单的 C 语言示例来说明缓冲区溢出的概念。假设我们有一个程序,它包含一个缓冲区和一个函数,该函数接受用户输入并将其复制到一个固定大小的数组中:

#include <stdio.h> 
#include <string.h> 
 
void vulnerable_function(char *input) { 
    char buffer[12]; // 假设这个缓冲区只有12个字节的容量 
 
    // 将用户输入复制到缓冲区,但没有检查输入的长度 
    strcpy(buffer, input);
 
    printf("Buffer content: %s\n", buffer);
} 
 
int main() {
    char user_input[20];
 
    printf("Enter some text: ");
    fgets(user_input, sizeof(user_input), stdin); 
 
    // 调用存在漏动的函数
    vulnerable_function(user_input); 
 
    return 0;
}

在这个例子中,vulnerable_function 函数使用了 strcpy 函数将用户提供的输入复制到一个只有12个字节大小的缓冲区中。如果用户输入的字符串长度小于或等于12个字节,那么一切都会正常。但是,如果用户输入的字符串长度超过了12个字节,strcpy 函数将继续复制数据,直到遇到字符串的结束符 '\0',这会导致数据溢出到缓冲区之外的内存区域。

例如,如果用户输入了超过12个字符的字符串,比如 "This is a very long string that will cause a buffer overflow!",那么溢出的数据将会覆盖掉紧随缓冲区之后的内存区域。如果这部分内存恰好包含了函数的返回地址或者其他重要的程序数据,就可能导致程序崩溃或者被公鸡者利用来执行恶意代吗。

防御措施

为了避免这种类型的漏动,应该采取以下措施:

  1. 使用安全的字符串复制函数,如 strncpy 或 snprintf,这些函数允许指定最大复制长度。
  2. 在复制数据之前,始终检查输入数据的长度,确保它不会超过目标缓冲区的容量。
  3. 使用编译器提供的保护措施,如栈保护(Stack Canaries)、NX位(No eXecute bit)和地址空间布局随机化(ASLR)。
  4. 进行代码审查和安全测试,以便尽早发现并修复潜在的缓冲区溢出漏动。

通过这些措施,可以大大降低缓冲区溢出漏动的风险,提高程序的安全性。

pwn基础(一)环境搭建_数据_03

主要关注一下eip和ESP这两个

在python中将"A"*1000

然后再发送1000个A过去看看程序会不会崩溃

pwn基础(一)环境搭建_python_04

程序崩溃后可以看到内存和eip、esp都是A

可以多次验证是多少位的内存

可以将远程shell的payload插入进去,找到对应的路径直接连接远程shell

A已经注入到了EAX寄存器里,EIP位置里寄存器变成了42 42 42 ,也就是说偏移量为1902个字节之后被写入到EIP寄存器里

可以精准的控制EIP里出现那个内存地址


可以把反弹shell的二进制代码存在第一个具体位置,然后精准的定位到某个位置之后,把内存写到eip,cpu就会执行这个位置找到反弹shell并执行。

pwn环境搭建

pwn基础(一)环境搭建_python_05

vmware的乌班图安装,先按下不表,不会的自行找

pwn基础(一)环境搭建_缓冲区溢出_06

版本别太高了,选6.5

pwn基础(一)环境搭建_数据_07

选择好镜像

pwn基础(一)环境搭建_python_08

选择Ubuntu系统

pwn基础(一)环境搭建_缓冲区溢出_09

这个位置是写帐户密码的

pwn基础(一)环境搭建_数据_10

磁盘大小选择25GB-选择存储为单个文件

pwn基础(一)环境搭建_python_11

然后就可以一直下一步到完成

pwn基础(一)环境搭建_数据_12

开机之后选择安装Ubuntu的

pwn基础(一)环境搭建_数据_13

开机卡logo的话搜索这个技术博文

 pwn环境搭建

pwn基础(一)环境搭建_缓冲区溢出_14

sodu apt-get update#更新系统

sudo su #进入管理员

apt-get install python2.7 python pip python-dev git libssl-dev libffi-dev build-essential #安装python2.7

pwn基础(一)环境搭建_缓冲区溢出_15

pip install --upgrade pip #升级一下pip

pwn基础(一)环境搭建_python_16

安装git,gdb和gdb-multiarch,同时安装binfmt用来识别文件类型

sudo apt-get install git gdb-multiarch

sudo apt-get install "binfmt*"

安装gdb的插件pwndbg(或者gef等gdb plugin)

git clone https://github.com/pwndbg/pwndbg

cd pwndbg

./setup

pwn基础(一)环境搭建_数据_17

安装pwntools

pip install pwntools

pwn基础(一)环境搭建_python_18

如果要在64位linux下运行32位的程序,需要装multilib,如果在64位系统运行32位程序这个是必须装的

apt install gcc-multilib

pwn基础(一)环境搭建_数据_19

完美搭建

pwn基础(一)环境搭建_python_20

cd Pwn/

ls

gdb DimpleRev_m

pwn基础(一)环境搭建_python_21

搭建之后的样子

出现这个pwndbg

pwn基础(一)环境搭建_数据_22

输入start

pwn基础(一)环境搭建_数据_23

这就是正常的调试了

pwn基础(一)环境搭建_数据_24

pwn的学习环境

pwn基础(一)环境搭建_数据_25

github里直接搜索ctf

pwn基础(一)环境搭建_缓冲区溢出_26

就可以看到很多的ctf的资源啦

pwn基础(一)环境搭建_缓冲区溢出_27

然后找到一个pwn

pwn基础(一)环境搭建_缓冲区溢出_28

随便打开一个题目可以看到服务器的端口地址都给你列出来了还有对应的write-up解析,如果没有的话去搜索一下,都有的。在这里找题目来练习就可以了。


标签:漏动,环境,Pwn,缓冲区,内存,pwn,溢出,搭建
From: https://blog.51cto.com/zhuzhuxia/11936401

相关文章

  • CLion 配置 Qt 开发环境
    https://blog.csdn.net/theRavensea/article/details/136534197 录CLion配置Qt开发环境环境说明基本配置1.创建Qt项目2.设置CLion工具链3.配置外部工具一些问题的补充CLion配置Qt开发环境环境说明操作系统:Windows10CLion版本:2023.3.4CMake版本:3.27.7Qt6版本:6.6.2(......
  • vue+ThreeJS:从0 到1 搭建开发环境
    文章目录一、下载安装(懒人版)二、顺序安装1,下载安装nodejs2,安装vue-cli3,创建vue-three项目。4,安装threeJS5,安装elementUI(选装)最终package.json文件如下:本系列教程是在vue2.X的基础上加载threeJS程序,来开发各种示例程序。一、下载安装(懒人版)下载vue-three系统包,n......
  • 安装了跑神经网络的环境,所遇到的问题及解惑1
    cuda:12.2cudnn:8.9.7tensorflow库:2.17.0(python310_test){9:37}/home/code/python➭pythonmnist_test.py2024-09-0609:39:29.473128:Eexternal/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261]UnabletoregistercuDNNfactory:Attemptingtoregister......
  • 记一次阿里云搭建K8S在恢复镜像快照之后etcd一个节点无法启动问题
    环境查看系统环境#cat/etc/redhat-releaseCentOSLinuxrelease7.9.2009(Core)#uname-aLinuxCentOS7K8SMaster010051013.10.0-1160.114.2.el7.x86_64#1SMPWedMar2015:54:52UTC2024x86_64x86_64x86_64GNU/Linux软件环境#kubectlversionClientVe......
  • 2024年实体门店和企业怎么做短视频矩阵获客?为什么要做短视频矩阵?一文告诉你短视频矩阵
    短视频矩阵获客是一种基于多个短视频账号,通过不同职能划分和策略组合,实现更高效、更精准的客户获取方式。一、短视频矩阵是什么?短视频矩阵是指由多个短视频平台通过某种方式连接在一起,形成一个统一的短视频发布、分享和观看的网络体系。每个平台可能具有自己独立的特点和用户......
  • 平台系列三:搭建的时机
            在当今数字化转型浪潮中,软件技术平台已成为企业核心竞争力的重要组成部分。它不仅支撑着企业的日常运营,还驱动着业务的创新与增长。然而,面对复杂多变的市场环境和快速迭代的技术趋势,企业是否应该投入资源搭建技术平台?何时是最佳时机?技术平台是否真的是企业的“......
  • 分布式IO在喷涂工艺环境中的应用
    导读喷涂是一种表面处理技术,它通过将液体或粉末状的涂料以雾化的形式均匀地施加到物体表面上,形成一层保护性或装饰性的涂层,喷涂的主要作用包括:保护作用:提供防腐蚀、耐磨损、抗紫外线等保护,延长产品的使用寿命;装饰作用:改善产品的外观,提供丰富的颜色和光泽,增加产品的美观度和市场竞......
  • 【模仿学习代码复现】环境安装踩坑记录
    (这人怎么又在装环境)下载了一下OpenAI的论文代码,官方readme里的依赖设置如下:*OpenAIGym>=0.1.0,mujoco_py>=0.4.0*numpy>=1.10.4,scipy>=0.17.0,theano>=0.8.2*h5py,pytables,pandas,matplotlib前面都好好的,装到theano突然发现这破玩意不支持3.6及以上版本,......
  • mysql主备环境同机搭建
    社区版下载地址:downloads.mysql.com/archives/community/原包 ##解压[root@prdb19u01]#tar-xvfmysql-8.4.0-linux-glibc2.28-x86_64.tar.xzmysql-8.4.0-linux-glibc2.28-x86_64/bin/mysql-8.4.0-linux-glibc2.28-x86_64/bin/myisam_ftdumpmysql-8.4.0-linux-glibc......
  • 基础网络安全——K8S关键概念及搭建过程中遇到的问题补充
    一、K8S集群基本概念             k8s是一组服务器集群,是一个分布式的容器编排系统,对运行在集群上的容器进行管理,K8S集群包括控制平面(ControlPlane)以及1个或者多个工作节点(workernode),而控制平面包括masternode以及etcd节点。并且在这两种类型的节点上运行多种不......