PWN入坑指南

2024-05-29 03:28
文章标签 指南 pwn 入坑

本文主要是介绍PWN入坑指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CTF的PWN题想必是很多小伙伴心里的痛,大多小伙伴不知道PWN该如何入门,不知道该如何系统性学习

0x01开篇介绍

pwn.webp.jpg

PWN 是一个黑客语法的俚语词 ,是指攻破设备或者系统 。发音类似"砰",对黑客而言,这就是成功实施黑客攻击的声音--砰的一声,被"黑"的电脑或手机就被你操纵了 。

斗哥认为解决PWN题就是利用简单逆向工程后得到代码(源码、字节码、汇编等),分析与研究代码最终发现漏洞,再通过二进制或系统调用等方式获得目标主机的shell 。

0x02 解题步骤

解题步骤.webp.jpg

1. 逆向工程:

逆向是PWN解题的第一步,但不是PWN题的重点。所以只要知道简单的逆向工具的使用步骤。最终目的是得到代码(源码、汇编等)。

掌握工具:

IDA Pro

2. 分析代码:

分析代码步骤也就是漏洞挖掘,这是PWN解题最重要的一步。

对逆向工程的结果进行静态分析或对程序进行动态调试,找出程序中存在的漏洞。大多数PWN题都存在常见的漏洞 。

掌握工具:

静态分析:IDA Pro

动态调试:gdb(with peda or gef)、windbg、ollydbg

掌握技能:

1. C语言:变量声明、常见函数的使用、熟悉常见漏洞函数等

2. 汇编语言:程序执行、函数栈帧、函数调用等

3.漏洞利用:

根据分析代码步骤得出的漏洞点,使用漏洞利用方式对漏洞进行利用,编写初步的exp。

掌握工具:

pwntools、zio

掌握技能:

1. 熟悉程序各种保护机制的绕过方式

2. 掌握ELF文件基本概念

3. 熟悉Linux系统如何加载ELF程序

4. getshell:

到了getshell步骤 ,PWN题基本已经解出来了,把我们漏洞利用步骤的exp替换成获取系统shell的code形成最终exp,就可以拿到主机的shell权限获取flag。

分两种情况:

(1) 内存程序中有getshell函数或指令时,直接调用/劫持。

(2) 存程序中没有getshell函数或指令时, 就要编写shellcode。

getshell函数如:system("/bin/sh")

掌握工具:

pwntools、zio

掌握技能:

1. 系统调用方式

2. 学习shellcode基本原理

3. 学习如何编写shellcode

4. 学习plt & got表在程序运行时的功能

0x03 常见的漏洞介绍

漏洞.webp.jpg

在分析代码步骤时,有些漏洞是经常出现,所以我们应该事先了解常见的漏洞,这样可以让我们在分析代码时事半功倍。

下面斗哥简单列举一些漏洞,相关漏洞的详细介绍可以到Wiki学习。

1. 缓冲区溢出:

缓冲区溢出包括:堆溢出、栈溢出、bss溢出、data溢出。这些溢出通常覆盖指针,造成程序执行劫持。其中栈溢出是出题最多的一个缓冲区溢出漏洞,也是斗哥PWN系列文章的重点。

2. 整数溢出:

整数溢出通常是指:无符号型与有符号的转换 、整数加减乘除法。整数溢出通常会进一步转换为缓冲区溢出、逻辑漏洞等其他漏洞。

3. 格式化字符串:

格式化字符串通常是指:程序使用printf(s),sprintf(s),fprintf(s)等函数格式字符且未作任何处理。可能导致任意地址读写 、泄露函数地址。

4. 逻辑漏洞:

逻辑.webp.jpg

逻辑漏洞主要形成原因是程序访问时,或者处理数据不当而引发的漏洞。主要漏洞有访问控制,协议漏洞,条件竞争等。

0x04 小小总结

主要介绍PWN的解题步骤和每个步骤需要学习的工具与知识点,以及常见漏洞介绍

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取 

 读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

同时每个成长路线对应的板块都有配套的视频提供: 

大厂面试题

视频配套资料&国内外网安书籍、文档

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~ 

 读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

特别声明:

此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。

这篇关于PWN入坑指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1012515

相关文章

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

如何掌握面向对象编程的四大特性、Lambda 表达式及 I/O 流:全面指南

这里写目录标题 OOP语言的四大特性lambda输入/输出流(I/O流) OOP语言的四大特性 面向对象编程(OOP)是一种编程范式,它通过使用“对象”来组织代码。OOP 的四大特性是封装、继承、多态和抽象。这些特性帮助程序员更好地管理复杂的代码,使程序更易于理解和维护。 类-》实体的抽象类型 实体(属性,行为) -》 ADT(abstract data type) 属性-》成

使用条件变量实现线程同步:C++实战指南

使用条件变量实现线程同步:C++实战指南 在多线程编程中,线程同步是确保程序正确性和稳定性的关键。条件变量(condition variable)是一种强大的同步原语,用于在线程之间进行协调,避免数据竞争和死锁。本文将详细介绍如何在C++中使用条件变量实现线程同步,并提供完整的代码示例和详细的解释。 什么是条件变量? 条件变量是一种同步机制,允许线程在某个条件满足之前进入等待状态,并在条件满

Java 入门指南:Java 并发编程 —— 并发容器 ConcurrentLinkedDeque

文章目录 ConcurrentLinkedDeque特点构造方法常用方法使用示例注意事项 ConcurrentLinkedDeque ConcurrentLinkedDeque 是 Java 并发工具包(java.util.concurrent 包)中的一个线程安全的双端队列(Deque)实现,实现了 Deque 接口。它使用了链表结构,并且针对高并发环境进行了优化,非常适合

使用Nginx部署前端Vue项目的详细指南

在本文中,我们将详细介绍如何使用Nginx部署一个前端Vue项目。此过程涵盖Vue项目的构建、Nginx的安装与配置、以及最后的项目启动。下面是步骤的详细说明。 步骤 1: 准备你的Vue项目 确保你已经创建并构建了一个Vue项目。如果你尚未创建Vue项目,可以使用以下命令创建一个: # 安装Vue CLInpm install -g @vue/cli# 创建一个新的Vue项目vue c

入门指南 | Datavines 安装部署篇

摘要:本文主要介绍基于源码部署 Datavines 和执行检查作业,内容主要分为以下几个部分: 平台介绍快速部署运行数据质量检查作业 Datavines 的目标是成为更好的数据可观测性领域的开源项目,为更多的用户去解决元数据管理和数据质量管理中遇到的问题。在此我们真诚欢迎更多的贡献者参与到社区建设中来,和我们一起成长,携手共建更好的社区。 https://github.com/dat

如何将卷积神经网络(CNN)应用于医学图像分析:从分类到分割和检测的实用指南

引言 在现代医疗领域,医学图像已经成为疾病诊断和治疗规划的重要工具。医学图像的类型繁多,包括但不限于X射线、CT(计算机断层扫描)、MRI(磁共振成像)和超声图像。这些图像提供了对身体内部结构的详细视图,有助于医生在进行准确诊断和制定个性化治疗方案时获取关键的信息。 1. 医学图像分析的挑战 医学图像分析面临诸多挑战,其中包括: 图像数据的复杂性:医学图像通常具有高维度和复杂的结构

从零开始构建大语言模型并进行微调:全面指南

要从0开始搭建并训练一个大语言模型(LLM),涉及到多个步骤和资源,包括理论理解、工具使用、数据准备、模型训练与微调。以下是一个从基础到应用的指南,帮助你理解并逐步实现这一目标。 1. 理解基础概念 在开始搭建大语言模型之前,了解以下基本概念至关重要: 生成式AI:通过大语言模型生成自然语言文本,例如GPT、BERT等。机器学习:通过数据训练模型,使其具备从数据中学习规律的能力。深度学习:机