首页 > 其他分享 >菜鸟笔记之PWN入门(1.0.0)前言

菜鸟笔记之PWN入门(1.0.0)前言

时间:2024-09-17 22:24:33浏览次数:9  
标签:脚本 1.0 菜鸟 学习 漏洞 Linux PWN 靶机

什么是 PWN?

PWN 是黑客术语中的俚语,是指攻破设备或者系统。它的发音类似于“砰”,当然也有师傅把它叫作“胖”。PWN 的目标是获取系统的控制权或执行未经授权的操作。

如何入门 PWN

前置知识

  1. C 语言

  2. Python 语言

    建议:掌握 C 语言后,可以直接用文章进行 Python 的学习,进度会更快。

  3. 汇编语言

    基础要求:理解基本的汇编指令(如 poppushjmp)和程序流程即可。

  4. ELF 相关知识

    • 学习内容
      • ELF 文件的组成部分
      • 各部分的作用
      • 常用的保护机制
    • 学习资源
      在后续文章中会有简单介绍
  5. Linux 操作系统基础

    • 学习内容
      • 基本的 Linux 命令(如 cdlscat
      • 系统调用函数(如 execve
      • glibc 库
    • 学习资源
      在后续文章中会有简单介绍

    基础要求:能够使用基本的 Linux 命令,了解系统调用函数和 glibc 库的基本知识。

工具和资源

  1. 虚拟机和操作系统

    • 建议:搭建一个 Ubuntu 虚拟机环境,以便调试和解决题目。
    • 尽管大部分题目都使用Ubuntu环境,但这并不意味着你必须要使用 Ubuntu 作为你的主力操作系统 。你仍旧可以选择继续使用你喜欢的其他 Linux 发行版(如,Arch、Debian、openSUSE、Fedora、NixOS 等)然后使用 Docker 来模拟 Ubuntu 环境
  2. 工具

    • IDA:逆向分析工具
    • Python + pwntools:用于编写漏洞利用脚本
    • gdb + pwndbg/peda:用于调试二进制文件
    • QEMU:有些题目需要它来模拟环境(对于基础入门并不是必须的工具)

    注意:入门阶段不需要配置复杂的环境,基础的调试和利用工具足够。

PWN 大致内容

  • 栈溢出与 ROP 链:理解栈溢出漏洞和如何利用返回-oriented programming(ROP)来绕过安全保护机制。
  • 格式化字符串:学习如何利用格式化字符串漏洞来进行攻击。
  • 整数安全:了解整数溢出等安全问题。
  • 堆漏洞利用:探索如何利用堆上的漏洞进行攻击。
  • 异架构:理解不同架构(如 x86、ARM)的特点和攻击方法。
  • 内核漏洞:深入研究内核漏洞 (可能这并不基础...)

做PWN题的大致流程

这里使用buuctf中PWN板块的第二题rip为例子:BUUCTF在线评测 (buuoj.cn)

1. 下载和启动靶机

点开题目,里面会有一个可以下载的文件,以及启动靶机四个大字。如下图:

2. 将文件传入Linux虚拟机

打开Linux虚拟机,下载这个附件并将这个附件传入到Linux虚拟机中。此时我们可以看到这个附件叫pwn1

3. 检查二进制文件的安全性和架构

使用checksec工具(安装pwntools后就有了)去查看它的架构和位数以及保护开启的情况,这里因为是基础题所以什么保护都没有

4. 反编译和分析二进制文件

将文件拖动到IDA这类反编译工具中,对二进制文件进行反编译
下图中这个非常有魅力的女人头像的工具就是我们的IDA

刚刚我们通过checksec已经知道了pwn1他是64位的,那么就拖入64位的IDA中(其实如果你拖错了,IDA会提示你搞错了,所以checksec的主要功能是查看开启了什么保护)

拖入后会看到这个画面,直接OK就完事了

然后进入后,我们在左侧的Functions栏里面找到main函数并点击他

选中main函数后,按TAB键(一般在Q的左边)或者按F5键,此时就会显示伪C语言代码

5. 理解代码和找出漏洞

看懂代码(需要学习C语言),找出漏洞(需要学习相关的PWN知识),编写python脚本(需要学习python语言和使用pwntools等库)
pwntools的使用后续会进行介绍

#PWN1 exp
from pwn import *
context.log_level = 'debug'

#io = process('./pwn1') # 本地
io = remote('node5.buuoj.cn',28735)

payload = b"A"*15
payload +=p64(0x401186)

io.sendline(payload)
io.interactive()

这里我编写了python脚本,并将其命名为exp.py

6. 创建靶机并运行脚本尝试攻击
  • 使用nc:用nc命令连接靶机(如nc node5.buuoj.cn 28735)进行测试。
    • 测试脚本:将脚本中的地址和端口替换为靶机提供的实际地址和端口。
    • 检查结果:确认脚本是否能正确获取flag,解决EOF错误的问题。

点击启动靶机

会得到一串nc地址,这个可以在Linux中使用nc工具进行连接

这里我们使用python脚本去攻击它的时候,需要将其放入python脚本中
比如:io = remote('node5.buuoj.cn',28735)
我们尝试运行这个脚本

然后输入指令cat flag就可以拿到我们想要的东西了,复制flag去平台提交即可

如果没有打通的话会输出提示
[*] Got EOF while reading in interactive
表示连接断开了,此时你输入cat flag是没有用的

刷题平台推荐

BUUCTF在线评测 (buuoj.cn)
题库 | NSSCTF
pwn.college
ctf.show

其中ctfshow大部分题目是收费的,但是里面的题目较为系统化,从简单到困难,因此我个人比较推荐

学习PWN是非常漫长的过程,需要学习大量知识,以及进行大量的练习。许多难以理解的问题可能很长一段时间都无法得到解决,复杂的漏洞利用也常常想让人放弃。所以在文章的最后我想分享翁恺老师的一段话:“计算机里的所有东西都是人做出来的,别人能想的出来的,我也一定能想的出来。在计算机里头没有任何黑魔法。所有的东西只是我现在还不知道而已,总有一天我会把所有细节所有内部的东西全都搞明白。”

参考文献

标签:脚本,1.0,菜鸟,学习,漏洞,Linux,PWN,靶机
From: https://www.cnblogs.com/XiDP0/p/18417550

相关文章

  • VScode快速配置c++(菜鸟版)
    1.vscode是什么VisualStdioCode简称VSCode,是一款跨平台的、免费且开源的现代轻量级代码编辑器,支持几乎主流开发语言的语法高亮、智能代码补全、自定义快捷键、括号匹配和颜色区分、代码片段提示、代码对比等特性,也拥有对git的开箱即用的支持。同时,它还支持插件扩展,通过丰......
  • 详解!HTTP1.0/1.1/2.0/3.0的区别
    详解HTTP1.0/1.1/2.0/3.0的区别1.0和1.1有什么区别?响应状态码的区别HTTP/1.0仅定义了16种状态码。HTTP/1.1中新加入了大量的状态码,光是错误响应状态码就新增了24种。比如说,100(Continue)——在请求大资源前的预热请求,206(PartialContent)——范围请求的标识码......
  • 基于nodejs+vue的校园菜鸟驿站管理系统的设计与实现(源码+LW+调试文档+讲解等)
     目录:博主介绍:  完整视频演示:系统技术介绍:后端Java介绍前端框架Vue介绍具体功能截图:部分代码参考:  Mysql表设计参考:项目测试:项目论文:​为什么选择我:源码获取:博主介绍:  ......
  • 【11.08测试】铲雪机的一些说明
    首先拿到本题第一时间能抽象出的题意相关内容为树上路径覆盖。然后考虑怎么做,因为树上路径覆盖问题为树上组合优化问题,树上组合优化大概有两种思路树上贪心&树形dp。对于树上路径覆盖问题,这两种思路就为树上贪心&树上插头dp。看到数据范围为\(n\leq200000\),如果是dp的话,状......
  • pwnos1
    文件泄露80端口下存在文件读取尝试读取用户列表http://192.168.1.110/index1.php?help=true&connect=../../../../../../../etc/passwdroot:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/bin/shbin:x:2:2:bin:/bin:/bin/shsys:x:3:3:sys:/dev:/bin/shsync:......
  • pwnos2
    这台靶机要自行配置攻击机在10.10.10.0/24网段下sql注入80端口login处发现可以注入的地方,sqlmap能梭出来很多东西,但是好像都登录不了,--os-shell也是没回显的sqlmap-uhttp://10.10.10.100/login.php--data="email=1&pass=1&submit=Login&submitted=TRUE"-Dch16-Tusers--......
  • VirtualBox 7.1.0 发布下载 - 开源跨平台虚拟化软件
    VirtualBox7.1.0发布下载-开源跨平台虚拟化软件VirtualBox7.1.0(macOS,Linux,Windows)-开源跨平台虚拟化软件OracleVMVirtualBox7请访问原文链接:https://sysin.org/blog/virtualbox-7/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org2024年9月11......
  • xyctf2024 pwn
    helloworldchecksec大多保护都开启了main函数int__fastcallmain(intargc,constchar**argv,constchar**envp){charbuf[20];//[rsp+0h][rbp-20h]BYREFinit();printf("%s","pleaseinputyourname:");read(0,buf,0x48uLL);p......
  • 多商户消费券V1.0.0
    微信公众号开发的在微信上发布消费代金券的系统。支持发布多商户跨店统一消费券,拉动消费。适用于商圈/商场/景区/社区/街区/综合体/连锁店等。简洁易用,功能闭环。V1.0.0发布版本......
  • 餐厅预订系统V1.0.0
    餐厅预定桌位系统,支持多店切换预约,提供全部前后台无加密源代码和数据库,支持私有化部署。V1.0.0发布版本......