pwn(一)前置技能

news2024/11/28 23:53:19

以下是pwn中的题目(漏洞)类型:

关于pwn的学习:

一.什么是pwn?(二进制的漏洞)

"Pwn"是一个俚语,起源于电子游戏社区,经常在英语中用作网络或电子游戏文化中的一个术语,最初,这个词是“own”的错误拼写,意味着彻底打败或掌握某事。在游戏中,如果一个玩家“pwns”另一个玩家,那通常意味着他们在竞技中显著地优于对手。

随着时间的推移,"pwn"这个词的意义被扩展到其他领域,尤其是计算机安全,在网络安全语境中,"pwn"通常指的是通过不同的攻击手段如利用漏洞、进行社会工程学攻击等方法成功地获得了一个设备、系统或网络的未授权控制权,一旦攻击者“pwn了”一个系统,他们就可以执行各种恶意活动,如窃取数据、安装恶意软件、或者制造更广泛的破坏。

特别是,在黑客竞赛或数量安全比赛如CTF(Capture The Flag)中,"pwn"任务经常涉及在一个受限制的环境中寻找和利用漏洞来访问受保护的资源或系统。成功"pwn"一个目标通常需要高水平的技术能力和创造力。

个人理解:它是向存在漏洞的目标服务器发送特定的数据(EXP)exp脚本,使得其执行恶意代码或命令。CTF 中 PWN 类型的题目的目标是拿到 flag,一般是在 linux 平台下通过二进制/系统调用等方式编写漏洞利用脚本 exp 来获取对方服务器的 shell,然后获得 flag。

pwn的概述:

二.pwn的前置技能

汇编语言,函数调用约定,大小端,函数栈帧

C语言,python语言,gdb调试,IDA pro分析

linux相关:32位与64位,各类防护机制(NX,ASLR,Canary,Relro),ELF文件格式,系统调用,shell命令

相关课程:

汇编语言

编程语言(C语言和Python)

计算机组成与原理

软件工具:

虚拟机以及VMtoolsubuntu(以及插件gdbpwntoolspedapwndbg等)IDA(32位和64位)

(还有好多工具,第一篇日志有一些安装的教程,以后慢慢学习其他的)

二进制基础:

  • 从C源代码到可执行文件的生成过程:
1. 编译:由C语言代码生成汇编代码
2. 汇编:由汇编代码生成机器码
3链接:将多个机器码的目标文件链接成一个可执行文件

什么是可执行文件?

1. 广义:文件中的数据是可执行代码的文件.out、.exe、.sh、.py
2.狭义:文件中的数据是机器码的文件.out、.exe、.dll、.so

可执行文件的分类?

Windows:PE(Portable Executable)
可执行程序.exe
动态链接库.dll
静态链接库.lib
Linux:ELF(Executable and Linkable Format)一种Linux下常用的可执行文件、对象、共享库的标准文件格式
可执行程序.out
动态链接库.so
静态链接库.a

image-20210121181422405

三.文件保护机制

Linux ELF文件的保护主要有四种:CanaryNXPIERELRO
在Linux中可以用checksec来检测文件的保护机制

接下来就了解一下checksec工具的使用

拿到pwn题的第一步大都是运行下,再拿checksec看开启了哪些保护机制,这篇文章主要介绍checksec的安装和使用要点。

1.安装:

git clone https://github.com/slimm609/checksec.sh.git
cd checksec.sh
sudo ln –sf checksec /usr/bin/checksec
(gdb-peda自带老版本的checksec,最后会做对比)

pwntools中自带checksec这个工具,安装了pwntools就不用再特意安装checksec了

关于gdb-peda:

GDB-PEDA-CSDN博客

2.checksec的使用:

(1)类型一 ——normal (or --format=cli)

checksec --file=文件名

(2)类型二 ——csv

checksec --output=csv --file=文件名

(3)类型三 ——xml

checksec --output=xml --file=文件名

(4)类型四 ——json

checksec --output=json --file=文件名

(常用于pwn拿到题目第一件事情checksec一下,然后file一下,然后nc命令互动一下,然后丢进去IDA一下。)

Arch:

程序架构信息。判断是拖进64位IDA还是32位?exp编写时p64还是p32函数?

RELRO

Relocation Read-Only (RELRO) 此项技术主要针对 GOT 改写的攻击方式。它分为两种,Partial RELRO 和 Full RELRO。
部分RELRO 易受到攻击,例如攻击者可以atoi.got为system.plt,进而输入/bin/sh\x00获得shell
完全RELRO 使整个 GOT 只读,从而无法被覆盖,但这样会大大增加程序的启动时间,因为程序在启动之前需要解析所有的符号。

gcc -o hello test.c // 默认情况下,是Partial RELRO
gcc -z norelro -o hello test.c // 关闭,即No RELRO
gcc -z lazy -o hello test.c // 部分开启,即Partial RELRO
gcc -z now -o hello test.c // 全部开启,即Full RELRO

Stack-canary

栈溢出保护是一种缓冲区溢出攻击缓解手段,当函数存在缓冲区溢出攻击漏洞时,攻击者可以覆盖栈上的返回地址来让shellcode能够得到执行。当启用栈保护后,函数开始执行的时候会先往栈里插入类似cookie的信息,当函数真正返回的时候会验证cookie信息是否合法,如果不合法就停止程序运行。攻击者在覆盖返回地址的时候往往也会将cookie信息给覆盖掉,导致栈保护检查失败而阻止shellcode的执行。在Linux中我们将cookie信息称为canary。

gcc -fno-stack-protector -o hello test.c   //禁用栈保护
gcc -fstack-protector -o hello test.c    //启用堆栈保护,不过只为局部变量中含有 char 数组的函数插入保护代码
gcc -fstack-protector-all -o hello test.c  //启用堆栈保护,为所有函数插入保护代码
NX

NX enabled如果这个保护开启就是意味着栈中数据没有执行权限,如此一来, 当攻击者在堆栈上部署自己的 shellcode 并触发时, 只会直接造成程序的崩溃,但是可以利用rop这种方法绕过

gcc -o  hello test.c // 默认情况下,开启NX保护
gcc -z execstack -o  hello test.c // 禁用NX保护
gcc -z noexecstack -o  hello test.c // 开启NX保护

PIE

PIE(Position-Independent Executable, 位置无关可执行文件)技术与 ASLR 技术类似,ASLR 将程序运行时的堆栈以及共享库的加载地址随机化, 而 PIE 技术则在编译时将程序编译为位置无关, 即程序运行时各个段(如代码段等)加载的虚拟地址也是在装载时才确定。这就意味着, 在 PIE 和 ASLR 同时开启的情况下, 攻击者将对程序的内存布局一无所知, 传统的改写
GOT 表项的方法也难以进行, 因为攻击者不能获得程序的.got 段的虚地址。
若开启一般需在攻击时泄露地址信息

gcc -o hello test.c  // 默认情况下,不开启PIE
gcc -fpie -pie -o hello test.c  // 开启PIE,此时强度为1
gcc -fPIE -pie -o hello test.c  // 开启PIE,此时为最高强度2
(还与运行时系统ALSR设置有关)
FORTIFY

这是一个由GCC实现的源码级别的保护机制,其功能是在编译的时候检查源码以避免潜在的缓冲区溢出等错误。
简单地说,加了这个保护之后,一些敏感函数如read, fgets,memcpy, printf等等可能
导致漏洞出现的函数都会被替换成__read_chk,__fgets_chk, __memcpy_chk, __printf_chk等。
这些带了chk的函数会检查读取/复制的字节长度是否超过缓冲区长度,

通过检查诸如%n之类的字符串位置是否位于可能被用户修改的可写地址,
避免了格式化字符串跳过某些参数(如直接%7$x)等方式来避免漏洞出现。
开启了FORTIFY保护的程序会被checksec检出,此外,在反汇编时直接查看got表也会发现chk函数的存在
这种检查是默认不开启的,可以通过

gcc -D_FORTIFY_SOURCE=2 -O1
开启fortity检查,开启后会替换strcpy等危险函数。

 四.NC命令

一.命令简介

nc是netcat的简写,是一个功能强大的网络工具。nc命令在linux系统中实际命令是ncat,nc是软连接到ncat,nc的主要命令如下。

1.实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口

2.端口的扫描,nc可以作为client发起TCP或UDP连接

3.机器之间传输文件

4.机器之间网络测速

 nc如果找不到nc命令可以使用yum install -y nc安装,其中centos6系统安装的是nc-1.84-24.el6.x86_64,centos7安装的是nmap-ncat-6.40-19.el7.x86_64。

1.验证服务器的端口是否通

首先在虚拟机中执行命令:ifconfig查看自己虚拟机的ip

nc -nv 10.10.100.221 22

2.拷贝文件功能

首先在接收端开启nc监听 (666是接收端和发送端建立连接的端口)

nc -lp 666 > test.txt

   然后在文件发送终端机器上发送文件

nc  10.10.100.221 666 < test.txt

3.终端之间通信

nc -l 666
nc 10.10.100.221 666

4.验证UDP端口

nc -uv 10.10.100.221  111

5.测试网速

以上的实操用我自己的端口我还没做出来,看下别人的:

Linux命令之nc_linux nc-CSDN博客

使用语法以及参数说明

1.使用语法: ncat [options] [hostname] [port]

2.参数说明(借鉴其他人的)

 

其实常用的就只有几个,把常用的记住就可以了(大部分了解就可以了)

例题:test_your_nc1(来自BUUCTF)

我直接展示用linux扫描后的部分(前面的部分需要用到IDA进行静态分析题目给的文件)

解题具体步骤:BUUCTF PWN-----第1题:test_your_nc_buuctf pwn第一题-CSDN博客

我直接nc这个网址,发现了报错,百度一下

看了别人的wp,发现网址中间的冒号要删掉

具体看一下是什么原因:

我猜测意思大概就是:ip地址中间的那个冒号把ip给中断掉了,所以导致linux无法解析这个ip,所以就会报错

先输入:nc node.buuoj.cn 28080

然后回车,输入ls

发现里面有flag文件,直接:cat flag,得到flag

成功解出flag

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

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

相关文章

qt 5.15.x 安装android过程记录

1.经过好几天的qt for android 安装&#xff0c;发现存在很多坑 参考其他文章可以编译出APK文件。但是我发现(我的机器上)无法调试apk程序&#xff0c;不能调试那怎么行呢&#xff0c;看了很多文章都是运行出结果了就结束了。没有展示怎么调试程序。 很多文章都是建议安装JDK8…

Docker安装教程使用

一、Docker简介 什么是docker&#xff1a; docker是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上, 也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口什…

低代码在物品领用领域数字化转型的案例分析

办公用品管理数字化不仅代表了企业管理模式的革新&#xff0c;更是提升运营效率和成本控制的关键举措。通过数字化手段&#xff0c;企业能够实现采购、库存、领用等流程的自动化和智能化管理&#xff0c;大幅减少人工操作&#xff0c;提高处理速度&#xff0c;确保数据的准确性…

如何申请通配符SSL证书——值得收藏

申请通配符SSL证书的过程大致可以分为以下几个步骤&#xff1a; 1. 选择CA机构&#xff1a; 首先&#xff0c;您需要选择一个受信任的证书颁发机构&#xff08;Certificate Authority&#xff0c;简称CA&#xff09;&#xff0c;如DigiCert、GlobalSign、或JoySSL。确保所选机构…

2023年数维杯国际大学生数学建模挑战赛B题棉花秸秆热解的催化反应解题全过程论文及程序

2023年数维杯国际大学生数学建模挑战赛 B题 棉花秸秆热解的催化反应 原题再现&#xff1a; 随着全球对可再生能源需求的不断增加&#xff0c;生物质能作为一种成熟的可再生能源得到了广泛的关注。棉秆作为一种农业废弃物&#xff0c;由于其富含纤维素、木质素等生物质成分&am…

LangChain:模型 I/O 封装使用解析和感触

目录 模型 API&#xff1a;LLM vs. ChatModel OpenAI 模型封装 多轮对话 Session 封装 换个国产模型 模型的输入与输出 Prompt 模板封装 PromptTemplate ChatPromptTemplate MessagesPlaceholder 从文件加载 Prompt 模板 TXT模板 Yaml模板 Json模板 输出封装 Out…

[代码比较工具下载及使用]你真的需要一个代码比较工具

&#x1f496;&#x1f496;&#x1f496;欢迎来到我的博客&#xff0c;我是anmory&#x1f496;&#x1f496;&#x1f496; 又和大家见面了 欢迎来到资源分享系列 这里有你想要的各种高质量资源 先来自我推荐一波 个人网站欢迎访问以及捐款 推荐阅读 如何低成本搭建个人网站 …

被称为“数智化黑马”的红海云,凭何连续四年登上HR服务品牌百强榜?

近日&#xff0c;中国领先的人力资源媒体机构HRoot发布了2023年中华区人力资源服务机构品牌100强榜单。该榜单经历经十余年&#xff0c;评选标准从最初的品牌影响力&#xff0c;扩大至人力资源服务机构的财务状况、成长性、创新性等更多维度。该榜单分为人力资源服务、人力资源…

十进制整数转平衡三进制

求解原视频&#xff1a;平衡三进制 求赞&#xff01;100赞买个乒乓球拍&#xff01;_哔哩哔哩_bilibili 题目&#xff1a; 上海市计算机学会竞赛平台 | YACS 求解程序&#xff1a; using namespace std; #include <iostream> #include <cstring>string work(int n…

李廉洋:5.13黄金原油消息面面和行情分析,必看策略。

黄金方面&#xff1a;月初公布的美国非农等就业市场数据比较弱势&#xff0c;显示美国就业市场开始走软&#xff0c;美联储在就业市场开始变差的背景下&#xff0c;存在提前降息的可能性&#xff0c;这有利于推动金价走高。The         近期公布的美国5月密歇根大学消费者…

2024终南山整形美容学院首届全国腹壁整形学术交流会 国际医学顺利开展

四月芳菲尽&#xff0c;五月絮升华。5月11日&#xff0d;12日&#xff0c;《2024终南山整形美容学院首届全国腹壁整形学术交流会暨第二届崔鑫腹壁整形学习班》在西安国际医学中心医院如期召开。来自全国各大整形外科同行精英们&#xff0c;济济一堂&#xff0c;共同交流探讨腹壁…

五月采购节 | 全场板卡八七折起

淘宝搜索【北京迅为电子官方企业】 5月13日~5月15日 海量优惠券等你拿&#xff01; 复制下方链接到淘宝 直接进入店铺&#xff01; https://shop459378556.taobao.com

项目-坦克大战-让坦克动起来

为什么写这个项目 好玩涉及到java各个方面的技术 1&#xff0c;java面向对象 2&#xff0c;多线程 3&#xff0c;文件i/o操作 4&#xff0c;数据库巩固知识 java绘图坐标体系 坐标体系-介绍 坐标体系-像素 计算机在屏幕上显示的内容都是由屏幕上的每一个像素组成的像素是一…

netty配置SSL、netty配置https(生产环境)

netty配置SSL、netty配置https&#xff08;生产环境&#xff09; 上一篇提到了如何在开发环境使用SSL&#xff1a;https://lingkang.top/archives/netty-pei-zhi-ssl 转自&#xff1a;https://lingkang.top/archives/netty-pei-zhi-https 那么netty如何使用可信任的证书呢&a…

栈的实现与OJ括号匹配

今日备忘录: "不破不立. " 本文索引 1. 前言2. 顺序表与链表的区别3. 什么是栈4. 栈的实现5. OJ括号匹配6. 总结 1. 前言 人总是在坍塌中重建, 有些东西必须摧毁, 才能迎来新生, 不管是那些消耗你的人, 还是令你感到焦虑的事情, 还是一份你觉得毫无意义并且又不喜欢…

python(环境安装)搭建、pycharm安装、背景改为白色详细文章

安装python环境 1、下载python安装包 Welcome to Python.org&#xff08;官网链接&#xff09; 2、点击下载、windows、python3.12.3 安装python 执行安装程序、安装选项 选择下面两项 翻译 Use admin privieges when installing py.exe是使用administrator超级管理员用户安…

疾病防范:拯救微笑,关于儿童抑郁的注意事项

引言&#xff1a; 儿童抑郁是一种常见但常被忽视的心理健康问题&#xff0c;对孩子的身心健康和成长都会造成严重影响。本文将探讨儿童抑郁的注意事项&#xff0c;以帮助家长和教育者更好地识别、理解和应对儿童抑郁问题。 1. 深入了解抑郁症&#xff1a; 抑郁症并非一种偶发的…

技术探索:揭秘美颜API与直播美颜SDK的算法与优化策略

今天&#xff0c;小编将深入探讨美颜API与直播美颜SDK背后的算法原理和优化方法。 一、美颜算法概述 美颜算法的核心在于对人脸的识别和特征分析&#xff0c;通过对人脸各个部位的处理&#xff0c;达到美颜等效果。 二、美颜API的算法原理 美颜API通常是以云服务的形式提供&…

参加了深圳线下组织的商业沙龙,收获颇丰

能参加本次商业沙龙也本是一连串的事情导致的&#xff0c;听我慢慢道来&#xff1a; 大概在4.13之前无意收到忘了谁发的短信了&#xff0c;说有个啥AI的报告会&#xff0c;然后我就报名了&#xff1a; 会上大佬还是挺多的&#xff0c;来了好多各界的老板和政府的领导&#xff…

MySQL—子查询

目录 ▐ 子查询概述 ▐ 准备工作 ▐ 标量子查询 ▐ 列子查询 ▐ 表子查询 ▐ 多信息嵌套 ▐ 子查询概述 • 子查询也称嵌套查询&#xff0c;即在一个查询语句中又出现了查询语句 • 子查询可以出现在from 后面 或where后面 • 出现在 from 后称表子查询&#xff0c;结…