查看: 343|回复: 2

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

[复制链接]
发表于 2021-1-5 21:09:18 | 显示全部楼层 |阅读模式

相关题目:

手把手教你PWN入门(一)——基础环境准备
作者:dxbaicai
教程说明
PWN一直是CTF比赛中较难的点,相比WEB等较为直观的题型,PWN要求对程序运行的底层有一定了解,并且需要掌握c、汇编、编译原理等较多底层知识,入门后还得进一步学习pwntools等python库等,所以一直显得很难上手。这里作者就以自己近期从0开始学习的经验出发,带着大家一起上手。工欲善其事必先利其器,为了便于调试和理解,本篇先说明怎样准备一个PWN调试用环境。
环境说明系统环境
kali-linux-2019.3-amd64(虚拟机)
安装工具列表
  • gcc-4.8(含64位和32位环境)—— 编译器
  • gdb-9.1和peda插件 —— 调试工具
  • pwntools —— CTF必备PWN库
环境安装安装gcc
这里有个坑,最新的gcc-9.x版本在编译的时候会在栈中插入一些自己的内容,对于新手入门来说不是很友好,所以这里我们选择较早的版本。
  • 加入支持老版本的源
    1
    2
    3
    4
    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及对应支持库
    1
    2
    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
    1
    apt install gdb

  • 安装peda插件
    1
    2
    3
    # 此处的/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
    1
    2
  • 安装支持组件pwn-binutils
    此处pwntools官网的教程我测试下来无法安装,这里给出另外一种安装方法。访问并下载完整zip包到本地,然后上传到你的虚拟机上:https://github.com/Gallopsled/pwntools-binutils
    1
    2
    3
    4
    cd pwntools-binutils-master/generic
    chmod +x install.sh
    # 这里参数选择与你的环境对应的,不过现在一般都是amd64
    ./install.sh amd64

  • pwntools
    1
    2
    3
    4
    pip install --upgrade pip
    pip install --ignore-installed psutil --user
    pip install matplotlib
    pip install --upgrade pwntools

  • 测试
    1
    2
    3
    4
    5
    python
    >>> from pwn import *
    >>> asm('mov eax, 0')
    # 应该会输出如下内容
    b'\xb8\x00\x00\x00\x00'


总结
到了这里你就装好了CTF-PWN所需要的基本环境了,下一步就可以自己写一个简单的c程序来练习栈溢出PWN了。
温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
论坛交流群:672619046

0

主题

5

帖子

0

精华

初级会员

Rank: 4

学币
5
荣耀
0
rank
0
违规
0

    发表于 2021-1-7 03:23:58 来自手机 | 显示全部楼层
    很喜欢这种从0基础到精通教学视频.
    学逆向论坛-免费的逆向学习论坛

    0

    主题

    1

    帖子

    0

    精华

    初级会员

    Rank: 4

    学币
    1
    荣耀
    0
    rank
    20
    违规
    0

      发表于 2021-1-8 23:10:22 | 显示全部楼层
      这种从头介绍的帖子挺好
      学逆向论坛-免费的逆向学习论坛
      微信扫一扫即可使用手机论坛
      快速回复 返回顶部 返回列表