首页
论坛
课程
招聘
雪    币: 1654
活跃值: 活跃值 (34)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝

[原创]从0开始CTF-PWN(一)——基础环境准备

2020-4-29 01:26 4889

[原创]从0开始CTF-PWN(一)——基础环境准备

2020-4-29 01:26
4889

手把手教你PWN入门(一)——基础环境准备

作者:dxbaicai

教程说明

PWN一直是CTF比赛中较难的点,相比WEB等较为直观的题型,PWN要求对程序运行的底层有一定了解,并且需要掌握c、汇编、编译原理等较多底层知识,入门后还得进一步学习pwntools等python库等,所以一直显得很难上手。这里作者就以自己近期从0开始学习的经验出发,带着大家一起上手。工欲善其事必先利其器,为了便于调试和理解,本篇先说明怎样准备一个PWN调试用环境。

环境说明

系统环境

kali-linux-2019.3-amd64(虚拟机)

安装工具列表

  1. gcc-4.8(含64位和32位环境)—— 编译器
  2. gdb-9.1和peda插件 —— 调试工具
  3. pwntools —— CTF必备PWN库

环境安装

安装gcc

这里有个坑,最新的gcc-9.x版本在编译的时候会在栈中插入一些自己的内容,对于新手入门来说不是很友好,所以这里我们选择较早的版本。

  • 加入支持老版本的源
    vi /etc/apt/sources.list
    # 增加如下内容
    deb http://ftp.us.debian.org/debian/ jessie main contrib non-free
    deb-src http://ftp.us.debian.org/debian/ jessie main contrib non-free
    
  • 安装gcc及对应支持库
    apt-get update
    apt-get install gcc-4.8 g++-4.8 g++-4.8-multilib
    
    装好之后可以用gcc -v测试一下是否显示4.8版本。

    安装gdb编译工具和peda插件

    与gcc不同,gdb可以装最新的版本。
  • 安装gdb
    apt install gdb
    
  • 安装peda插件
    # 此处的/home/pwn/peda安装路径可以自行更改
    git clone https://github.com/longld/peda.git /home/pwn/peda
    echo "source /home/pwn/peda/peda.py" >> ~/.gdbinit
    
    同样,装完使用gdb命令测试一下,应该会显示gdb-peda$ 。

pwntools

这里有另外一个坑,虽然python3也能安装pwntools,而且python2现在已进入不推荐阶段,但是做CTF-PWN的时候建议大家还是暂时先使用python2.7,python3实测会出现一些奇怪的兼容性问题,并且pwntools官方也是建议用python2.7的。
kali自带python2.7.x,这里不需要再额外安装python。
部分站点有梯子速度会快很多,建议有条件的准备下。

  • kali下安装pip
    wget https://bootstrap.pypa.io/2.6/get-pip.py
    python2 get-pip.py
    
  • 安装支持组件pwn-binutils
    此处pwntools官网的教程我测试下来无法安装,这里给出另外一种安装方法。访问并下载完整zip包到本地,然后上传到你的虚拟机上:https://github.com/Gallopsled/pwntools-binutils
    cd pwntools-binutils-master/generic
    chmod +x install.sh
    # 这里参数选择与你的环境对应的,不过现在一般都是amd64
    ./install.sh amd64
    
  • pwntools
    pip install --upgrade pip
    pip install --ignore-installed psutil --user
    pip install matplotlib
    pip install --upgrade pwntools
    
  • 测试
    python
    >>> from pwn import *
    >>> asm('mov eax, 0')
    # 应该会输出如下内容
    b'\xb8\x00\x00\x00\x00'
    

总结

到了这里你就装好了CTF-PWN所需要的基本环境了,下一步就可以自己写一个简单的c程序来练习栈溢出PWN了。

[公告]SDC2020 看雪安全者开发者峰会10月23日将在上海举行!欢迎参加!

最后于 2020-4-29 01:37 被dxbaicai编辑 ,原因: 找不到的敏感词。。
最新回复 (5)
雪    币: 930
活跃值: 活跃值 (897)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 活跃值 8 2020-4-29 11:13
2
0
期待后续更多的内容
雪    币: 169
活跃值: 活跃值 (39)
能力值: ( LV10,RANK:168 )
在线值:
发帖
回帖
粉丝
kaoyange 活跃值 1 2020-4-29 11:54
3
0
我想问玩pwn可以用centos吗?
雪    币: 1654
活跃值: 活跃值 (34)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
dxbaicai 活跃值 1 2020-4-29 13:04
4
0
kaoyange 我想问玩pwn可以用centos吗?
当然可以,linux内核的都差不多,centos、ubuntu都可以。另外用docker也可以。
雪    币: 3339
活跃值: 活跃值 (140)
能力值: ( LV8,RANK:126 )
在线值:
发帖
回帖
粉丝
Roger 活跃值 1 2020-4-30 11:01
5
1
可以用docker,很方便,这个镜像是搭建好的:https://hub.docker.com/r/skysider/pwndocker
雪    币: 131
活跃值: 活跃值 (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
JohnnySuen 活跃值 2020-5-13 00:35
6
0
文章中的“kali下安装pip”会因为pip链接超时报错,所以建议先将pip源更新以后再继续按照教程走!再次感谢大佬,初步pwn环境已成功搭建完成,希望之后自己能坚持下去
游客
登录 | 注册 方可回帖
返回