学习笔记——Test.pwn

news2024/11/26 18:51:11

前言:笔者也才接触Pwn,写这篇wp,记录目前所得感悟、思考、理解等。

存在错误,或者解释不通的地方,还请提出,已补足笔记的缺陷。

Pwn是什么?

我Pwn掉了你的电脑、我Pwn掉了你的设备……

通俗的讲,Pwn,大概就是,取得你所掌握的权限,或者高于你的权限。从而达到某些目的。

而,接触Pwn必不可少会接触三个词语:(我的理解)

exploit —— 编写攻击脚本的方案与策划

shellcode —— 取得对方交互,命令行

payload —— 攻击代码

以目前,笔者的学识,理解也不会很深入。

学习Pwn必备的知识:

多的不说,C语言、python、汇编语言、操作系统等

思考:对于CTF Pwn的题目,为什么大多都是Linux文件为主?

因为Linux开源、免费;Windows闭源,具体不多赘述。

reverse 涉及Windows程序、Linux程序都挺频繁的。

所以,以我目前的学习来说,

笔者认为,

如果想快速入门Pwn,C语言的基础不能少,至少要知道C语言常见的函数、数据类型格式、以及指针的大小等。

【核心】汇编语言,咱当时看的是王爽的。汇编寄存器、标志位、JCC家族、常见汇编指令(如mov、push、pop、ret、lea等)操作流程。【最最核心,对于函数调用栈的理解——Stack,例如bp指针始终指向栈底,sp指针始终指向栈顶。压栈出栈规则——后进先出、增长空间是由大到小的等。

函数调用常规肯定会有如下结构:

push ebp
mov ebp ,ebsp   

sub esp,100 开辟100字节的栈空间

....


leave /pop  恢复到堆栈平衡
ret        

等等,不在过多赘述。

【核心】  Pwn以Linux 为多。

所以重点抓住Linux系统结构就好。(部分)

8c34e244204d4936834a96b028e0f188.png

83662fffa1554e71ab7475f396b5280f.png

C语言、汇编、机器码之间的关系:(我的认知噢)

C语言——>C伪代码——>汇编——>机器码

机器码—— 一对一 ——>汇编—— 没有 一对一关系 ——>C语言

补充说明,这里解释说明为什么,反汇编简单,反编译很难(因为没有 一 一对应关系)

也就说明,为什么ida中有时候会存在一些差异、gdb也会存在。

Pwn工具的介绍:

这里,目前能用到的。

ida —— 分析程序的逻辑,粗略的找到程序逻辑漏洞。

gdb —— 动态调试的方式,去走一遍程序。

python3 —— pwntools —— 集成pwn的攻击需要吧

pwntools——checksec 自带 能查看程序的安全属性。

ROPgadget —— 目前来看,查询程序本身的某些汇编指令及地址。

(这里仅说这些,因为笔者目前只用到这些)

正题:

学习时,简单入门的Pwn题:

<<< ret2text >>>

做题思路:目前来看,大致差不多如下:

一、先查看保护属性:

Arch              框架结构
RELRO         防止全局偏移表覆盖攻击
Stack            栈保护
NX                数据执行防护 》》》开启说明不能再堆栈上执行shellcode
PIE               随机化

764b457ecf0d451da88f549f16e6be54.png

从此上面能大致,判断什么攻击手段不能够使用,具体需要看代码。

二、ida打开:

5e715951383d41ca8f5572d2a542db5a.png

system() + "bin/sh" 这两组合是非常危险的。可以获取 shell 

查看main:

fb3c9c965d0e487788305bfb32f2d737.png

内容如下:

59139d5ddb9847aaa79581ce6fc24cce.png

system + bin/sh(对于此题而言,有就直接使用)

287de6d6ce094f9e8c4596ae525f0af2.png

三、gdb动态调试。

98b0b817e53040269697e3e2dccc43bf.png

按  r     进行运行程序到断点的地方。

如下:

d0cd82f1772145d19ad21d222eec95ca.png

思路,目前我们要看看程序的执行流程,进行自定义函数进行看看。

按 n 相当于 F8 步过

d4cea7676dcb430a8395e58695e3b38b.png

1af0d076502c4bb6a0bf484882025dd0.png

8fd3ccae086741189a5504379afa684c.png

如下以及分析:

30f12461c3894469ada0784cb74e9b28.png

你要知道,函数在栈中调用逻辑:

26ab09ddab8c4a3d926e5b6d331558f4.png

另类情况:

5d03040cf7744f97ba2fe6ea286331de.png

这种情况称之为——栈溢出。也是最常见,为害最大的函数。

fff6ca4fa00f4891bad7bab5b81115aa.png

不对,在栈中我们看到的是:

0330f0e845134c4fb5d94c593efee524.png

什么应该是16个字节——>>> 表明 ida中,数据结构有问题噢(要注意)

b09e880cc351479fb791be352c490e88.png

EBP栈针被淹没>>>发生了栈溢出漏洞。

exploit的方案、和思路。

1. 我们需要溢出的字节数:(思考?为什么不是从EBP - ESP 这是是 - EAX?——因为写入开始计算)

843d218bd3f54bcc9dc991ca6e615568.png

2.溢出指针——EBP(因为是32位架构 ——>4字节,64位架构 ——>8字节)

3.shellcode的编写。

此题有现成的。

7cab4b9f03094887bf90ab71d9794efa.png

payload,实际就是整合上面的步骤。

exp:

733e71a80dbd40dc99623a71ab553299.png

70d6236c51f34aedae934788b5151809.png

实例:

《 攻防世界 ——pwnstack 》

6314d4f1b784468e89d692f2355bc2a9.png

步骤如上:

1.查安全属性。

c797212acacc453da5ad37a3eea91d71.png

2.ida打开分析。

b9154230a84c4fa5ba75540c464e7c29.png

main:

5c6bff3941e24d96aec8d9b3d54ec32f.png

3.gdb 动调。

38accc16433343819164505a0c521b0c.png

dbb13eddef204e5cb4c52a1652ff2752.png

RBP ——>8字节

exploit编写:

1.溢出字节 ——> 160

2.溢出RBP指针 ——> 8

3.shellcode ——>0x0400762 (ida中看见的那个地址。)

payload 1+2+3 

exp:

ee9e9abc548642288ca68af38b0cfde3.png

0d6c975f77764edaa798fc4ab7c67192.png

在此基础上,加深一点点:

<<< ret2shellcode >>>

1.安全属性。

471cab2f2a5740fa80f7647ec28c7dd7.png

“可读可写可执行” - -什么程序都没开。

2.ida分析。

83447087f9aa4b06b5ea96ec84914ee9.png

0c362b51832d401eb87e148a1d7af907.png

bss段,存放未初始化数据段。

3.gdb 动调

97208e713eb54beca858fefad05946c3.png

b134dc543a6f406a96081582ed4ce5f1.png

exploit:

1.溢出字节 0x6C

2.溢出指针 0x4

3.shellcode编写——pwntools自带

payload 1+2+3

exp:

a64a7b43d7444919b891d4d3c8444138.png

8be66cf7c692448ea358f1d992844d88.png

总结,这题,需要理解Linux系统。

编写exp的思路,也是来源于安全属性的特征。

具体,之后会补充。

实例:

《待补》

<<< ret2syscall >>>

关于ROP的

1.安全属性

68d231d8858b4135a34262c1aa100421.png

2.ida分析

95563089e26248849986b7fdc99f57d7.png

548ea29203c84b3dac258b1ba199f34e.png

没有system函数了该怎么办?

system的原型内核函数:

0ed7145670344603898f387c55f8374a.png

此处涉及ROP(需要用)

 ROPgadget --binary 程序路径 --only "pop | ret" ——去构造找到程序调用的pop | ret

42094e5cf6694898b5968cb9bd20d305.png

【去筛选出,有用的。】

可以通过利用函数调用栈,控制ESP栈顶指针,去pop ret 我们想要的东西。

3.gdb 动调

d3f45a91074c4f0982b16d476aa59efd.png

a1858cd85a294d148dcf2c6e8a1d1371.png

exploit:

1.溢出字节 0x6C+ 2.指针字节 0x04(可以合并)

2.shellcode

3.payload 1+2

exp:

ecf68b064b3346e48c16eada9c786f2a.png

7ce3c79c5724430085d3e2e4c0871b46.png

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

重庆大学软件工程考研,难度如何?

C哥专业提供——计软考研院校选择分析专业课备考指南规划 重大软件专业可谓是最好上岸的985院校&#xff01;重庆大学24考研各大学院复试录取情况已出&#xff0c; 我们先说学硕部分&#xff1a; 招生人数&#xff1a; 重庆大学软件工程学硕近几年计划统招人数都不多&#xf…

入选ECCV 2024!浙江大学联合微软亚洲研究院提出统一医学图像预训练框架UniMedI,打破医学数据异构化藩篱

让 AI 在某些条件下具备类似人类的反应能力&#xff0c;从而代替人类高效地从事特定工作&#xff0c;是 AI 领域研究人员孜孜不倦的追求。正如在医学图像和人工智能的交叉领域&#xff0c;基于视觉语言预训练的深度模型 (Visual-Language Pre-training, VLP) 凭借其自动化的特点…

Docker本地镜像发布到阿里云镜像服务的简易指南

1 阿里云容器镜像服务 阿里云容器镜像服务&#xff08;Alibaba Cloud Container Registry&#xff0c;简称ACR&#xff09;是一个为容器镜像、Helm Chart等云原生资产提供安全托管及高效分发的平台。它支持多架构容器镜像&#xff0c;包括Linux、Windows、ARM等&#xff0c;以…

心觉:感恩日记:每天5分钟,重新定义你的人生

​Hi&#xff0c;我是心觉&#xff0c;与你一起玩转潜意识、脑波音乐和吸引力法则&#xff0c;轻松掌控自己的人生&#xff01; 挑战每日一省写作207/1000天 你是否觉得生活节奏太快&#xff0c;总是有做不完的事、解决不完的问题&#xff1f; 有一个简单的方法&#xff0c;…

DEPT_ DECOMPOSED PROMPT TUNING FOR PARAMETER-EFFICIENT FINE-TUNING

论文汇总 当前的问题 (1)Prompt Tuning通常收敛缓慢&#xff0c;并且对初始化敏感&#xff1b; (2)Prompt Tuning延长了输入序列的总长度&#xff0c;从而加剧了计算需求(即训练/推理时间和内存成本)&#xff0c;这是由于Transformer的二次复杂度(Vaswani et al, 2017)。 解…

机器视觉系统硬件组成之工业相机篇

工业相机是一种非常重要的机器视觉器件&#xff0c;它能够将被采集的图像信息通过电路转换成电信号&#xff0c;再通过模数转换器&#xff08;ADC&#xff09;将其转化为数字信号&#xff0c;最后以标准的视频信号输出。工业相机在机器视觉领域得到了广泛应用&#xff0c;包括质…

springboot055服装生产管理的设计与实现(论文+源码)_kaic

毕业设计(论文) 协力服装厂服装生产管理系统 的设计与实现 学生姓名 XXX 学 号 XXXXXXXX 分院名称 XXXXXXXX 专业班级 XXXXX 指导教师 XXXX 填写…

CROss PlatformS (CROPS) 与 Docker

CROPS 是一个开源的、跨平台的开发框架&#xff0c;专为利用 Docker 容器在 Windows、macOS 和 Linux 系统上创建和管理构建主机而设计。它简化了在非 Linux 系统上运行 Yocto 项目及其他基于 Linux 的工具的过程&#xff0c;同时提供了一个可扩展的开发环境&#xff0c;支持多…

基于vue框架的的地铁站智慧管理系统的设计n09jb(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,上班打卡,下班打卡,人员管理,交接班,视频巡检,车辆巡检,车辆管理 开题报告内容 基于Vue框架的地铁站智慧管理系统的设计开题报告 一、研究背景与意义 随着城市化进程的加速&#xff0c;地铁站作为城市交通系统的重要组成部分&am…

全能型选手视频播放器VLC 3.0.21 for Windows 64 bits支持Windows、Mac OS等供大家学习参考

全能型选手视频播放器&#xff0c;支持Windows、Mac OS、Linux、Android、iOS等系统&#xff0c;也支持播放几乎所有主流视频格式。 推荐指数&#xff1a; ★★★★★ 优点&#xff1a; ◆、界面干净简洁&#xff0c;播放流畅 ◆、支持打开绝大多数的文件格式&#xff0c;包…

用Aconvert.com将MOBI文件转换为PDF:一步步指南

在今天的数字时代&#xff0c;文件格式转换是日常办公和学习中常见的需求之一。MOBI格式的电子书文件在某些设备上不太方便阅读&#xff0c;而PDF格式则更加通用。本文将为你详细介绍如何使用Aconvert.com将MOBI文件转换为PDF文件。 1. 访问Aconvert.com 首先&#xff0c;打开…

装修公司行业通用的小程序源码系统 让装修公司实现信息智能化 带完整的安装代码包以及搭建部署教程

系统概述 装修公司行业通用的小程序源码系统是一款专门为装修公司设计的智能化解决方案。它基于先进的技术架构&#xff0c;结合装修行业的特点和需求&#xff0c;为装修公司提供了全方位的业务支持和管理功能。 该系统通过小程序的形式呈现给用户&#xff0c;方便客户随时随…

MacOS13虚拟机VMware Workstation Pro 16安装

资源 安装unlocker 安装虚拟机 低版本的还没有MacOS13选项&#xff0c;这也是我安装低版本虚拟机踩过的坑 找个教程安装就可以了 省略…自己去找找教程… 过程中我使用桥接是不行的&#xff0c;没有网络&#xff0c;后面重新下一步一步的选择默认的网络重装后就好了&am…

基于yolov10的驾驶员抽烟打电话安全带检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv10的驾驶员抽烟、打电话、安全带检测系统是一种先进的驾驶行为监测系统。该系统利用YOLOv10算法的高效性和准确性&#xff0c;实现对驾驶员行为的实时检测与识别。 YOLOv10是一种最新的实时物体检测模型&#xff0c;其通过深度学习技术&#xff0c;如卷…

如何看ip属于什么地址

在数字化时代&#xff0c;IP地址作为互联网通信的基石&#xff0c;扮演着至关重要的角色。无论是网络管理、安全防护&#xff0c;还是日常的网络访问&#xff0c;理解IP地址的性质和分类都是必不可少的技能。本文将深入探讨如何判断一个IP地址属于哪一类地址&#xff0c;并详细…

Java项目-基于springboot框架的校园医疗保险管理系统项目实战(附源码+文档)

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 开发运行环境 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/…

Spring Boot整合Stripe订阅支付指南

在当今的在线支付市场中&#xff0c;Stripe 作为一款一体化的全球支付平台&#xff0c;因其易用性和广泛的支付方式支持&#xff0c;得到了许多企业的青睐。本文将详细介绍如何在 Spring Boot 项目中整合 Stripe 实现订阅支付功能。 1.Stripe简介 Stripe 是一家为个人或公司提…

低代码赋能项目管理系统:打造高效协同的数字化工作环境

项目管理是企业日常运营中的重要环节&#xff0c;其运作效率直接关系到项目的成功交付、资源的优化配置及企业的市场竞争力。然而&#xff0c;传统的项目管理系统却面临着诸多挑战。 传统管理系统开发周期长、耗资大、需要大量时间和资源来定制和优化。同时&#xff0c;高昂的维…

K8s-pod详解3(pod调度)

Pod调度 在默认情况下&#xff0c;一个Pod在哪个Node节点上运行&#xff0c;是由Scheduler组件采用相应的算法计算出来的&#xff0c;这个过程是不受人工控制的。但是在实际使用中&#xff0c;这并不满足的需求&#xff0c;因为很多情况下&#xff0c;我们想控制某些Pod到达某…

基于卷积神经网络的花卉分类系统,resnet50,mobilenet模型【pytorch框架+python源码】

更多目标检测和图像分类识别项目可看我主页其他文章 功能演示&#xff1a; 卷积神经网络&#xff0c;花卉识别系统&#xff0c;resnet50&#xff0c;mobilenet【pytorch框架&#xff0c;python源码】_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于卷积神经网络的…