pwn入门——1.序章

0x00 当我们在谈论pwn时我们都在谈论什么?

For 萌新:

  • 一个功能有限的小程序 eg:计算器,学生管理,或者仅仅是问一下你的名字
  • 一个IP地址和端口: nc 10.1.1.1 1234​
  • 我是谁?/我在哪里?/怎么就能getshell了????

For 老鸟:

  • 明显的 stack/heap/int 溢出,格式化字符串,off-by-one/UAF/double free/unlink/…………
  • 抽象成:对内存地址的读、写
  • 漏洞利用:shellcode/GOT/vtable/hook_function/onegadget

Pwn现在处于CTF的顶峰,一直以来它的难度其实并没有什么变化。

Pwn的入门确实是比较难,学习的路径非常的陡峭,很多人就望而却步了。

不像其他的Web或者杂项之类的,没事看看还能看的进去,像Pwn题有时一看一两个星期跟没看一样。

0x01 Pwn的定义

Pwn是一个骇客语法的俚语词,自”own”这个字引申出来的,这个词的含意在于,玩家在整个游戏对战中处在胜利的优势,或是说明竞争对手处在完全惨败的情形下,这个词习惯上在网络游戏文化主要用于嘲笑竞争对手在整个游戏对战中已经完全被击败(例如:”You just got pwned!”)。

在骇客行话里,尤其在另外一种电脑技术方面,包括电脑(服务器或个人电脑)、网站、闸道装置、或是应用程序,”pwn”在这一方面的意思是攻破(”to compromise”,危及、损害)或是控制(”to control”)。在这一方面的意义上,它与骇客入侵与破解是相同意思的。例如某一个外部团体已经取得未经公家许可的系统管理员控制权限,并利用这个权限骇入并入侵(”owned” 或是 “pwned”)这个系统。

0x02 CTF PWN

  • IP地址、端口(nc 10.1.1.1 1234​)
  • 程序文件(linux下elf文件居多)
  • libc动态链接库

最终目的:利用程序中的漏洞改变程序原本的执行流程(控制程序执行流/控制EIP(RIP))

0x03 解题步骤

  • 查看程序基本信息
  • 检查程序保护机制
  • 逆向分析、定位漏洞点、了解程序执行逻辑
  • 构造发送payload,利用脚本与程序交互
  • 调试程序
  • Pwned

0x04 逆向基础

了解字节序

字节序和处理器架构有关,常见的intel架构采用小端序(内存中的数据倒着放)

pwntools会帮我们处理p64()、p32()

0x05 做题环境

下载

虚拟机:

链接:https://pan.baidu.com/s/1Ia8NPcXy414QOaiH14T3sQ​
提取码:kypa​

账号密码: giantbranch:giantbranch​ (root密码可以通过sudo passwd root自行修改)

0x06 做题工具

工欲善其事必先利其器

  • ida_pro
  • pwntools
  • one_gadget ROPgadget ropper
  • pwndbg peda gef
  • checksec
  • main_arena_offset
  • pathelf
  • LibcSearcher(很鸡肋,可以去网上 找libc更可信)

32位系统默认虚拟内存大小为4GB,64位为256TB

bss节存放未使用的全局变量

局部变量在栈中

大端序小端序

​静态链接和动态链接

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值