文章目录

  • 拉取ubuntu镜像
  • 运行容器
  • 安装环境
    • 修改apt源
    • 修改pip源
    • 安装pwntools
    • 安装pwndbg
    • 安装ROPgadget、libc-database、one_gadget
    • 安装tmux
  • 与主机拷贝文件
  • 保存容器为新镜像
  • 示例
  • 补充
    • 添加32位程序支持

拉取ubuntu镜像

docker pull ubuntu:18.04

运行容器

docker run -i -t -d --name=pwn-ubuntu-18.04 -v /ctf/work -p 23946:23946 --cap-add=SYS_PTRACE --security-opt seccomp:unconfined ubuntu:18.04
docker exec -it pwn-ubuntu-18.04 /bin/bash

安装环境

修改apt源

清华大学开源软件镜像站,选择对应的源
https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/

依次执行下面的命令:

cd /etc/apt
# 保存原始的sources.list文件
cp sources.list sources.list.bak
apt-get update
apt-get install vim
# 更换源之后采用https协议,需要安装该软件才行
apt-get install apt-transport-https
# 覆盖原始的内容
echo '' > sources.list
# 将清华的源拷贝进去(Ctrl+Shift+v)保存
vim sources.listapt-get update

修改pip源

cd ~/.pip

如果不存在.pip目录,则创建目录:

mkdir ~/.pip
cd ~/.pip
touch pip.conf
sudo gedit ~/.pip/pip.conf

在pip.conf中写入如下内容:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
[install]
trusted-host = pypi.tuna.tsinghua.edu.cn

安装pwntools

apt-get install python2.7 python-pip python-dev git libssl-dev libffi-dev build-essentialpip install pwntools

安装pwndbg

# 创建相应目录
cd /home
mkdir em
cd em
mkdir software
cd software/# 安装
git clone https://github.com/pwndbg/pwndbg
cd pwndbg
apt-get install sudo
./setup.sh

安装ROPgadget、libc-database、one_gadget

apt-get install ruby
apt-get install gem
gem install one_gadget

安装tmux

使用bash进入到docker中后只有一个命令行终端,这样很不方便,可以在该容器中安装tmux,来同时开启多个终端。
使用
apt-get install tmux来安装

启动鼠标切换界面:

touch .tmux.conf
vim .tmux.conf

set -g mouse on
注意:在启用鼠标切换之后如果需要选中终端中的部分内容,需要在按住Shift的情况下才可以

与主机拷贝文件

从主机往容器中拷贝

docker cp C:\Users\Administrator\Desktop\\pwn pwn-ubuntu-18.04:\ctf\work

保存容器为新镜像

经过上面的步骤,我们已经搭建好了需要的环境,下面就将这个容器打包成镜像
首先退出该容器,然后查看已经停止运行的容器:

docker ps -a

得到容器的id。

使用commit命令提交该容器为镜像:

# 可能需要一点时间
docker commit -m "pwn ubuntu 18.04 v1" f6d36cb41b26 yusakul/pwn-ubuntu-18.04:v1
# 其中`-m`为提交镜像时的描述
# 5cfd7de2e9f7 为容器的id
# e3pem/dockerpwn:v2 为镜像的标签,将e3pem换成自己在dockerhub上的用户名# 查看构造出来的镜像
docker images

可以选择将镜像push到dockerhub,需要登陆dockerhub

# docker tag yusakul/pwn-ubuntu-18.04:v1 yusakul/pwn-ubuntu-18.04
docker push yusakul/pwn-ubuntu-18.04:v1

下载地址

docker pull yusakul/pwn-ubuntu-18.04:v1
docker run -i -t -d --name=pwn-ubuntu-18.04 -v /ctf/work -p 23946:23946 --cap-add=SYS_PTRACE --security-opt seccomp:unconfined yusakul/pwn-ubuntu-18.04:v1

示例

socat tcp-listen:10001,reuseaddr,fork EXEC:./heapTest_x64,pty,raw,echo=0
from pwn import *
io=remote("172.17.0.2",10001)
io.recv()
io.send("")
io.send("\n")
io.sendline("")
io.close()

补充

添加32位程序支持

apt-get install lib32z1 lib32ncurses5
apt-get install lib32stdc++6

docker搭建pwn环境相关推荐

  1. docker搭建 LNMP 环境

    一.准备镜像 安装完docker后,更换完镜像源(docker的安装十分简单自行百度即可) 打开/etc/docker目录下的daemon.json 添加以下内容 { "registry-m ...

  2. virtualbox php mac,详解mac下通过docker搭建LEMP环境

    在mac下通过docker搭建LEMP环境境 1.安装virtualbox.由于docker是在lxc环境的容器 2.安装boot2docker,用于与docker客户端通讯 > brew up ...

  3. apt ubuntu 指定ipv4_macOS 下使用 Docker 搭建 ubuntu 环境

    学习网络开发过程中不想"污染"macOS,考虑到之后部署网络应用主要是与linux打交道,所以安装了 ubuntu 虚拟机以满足短期的知识学习需求.十里安装了 ubuntu 虚拟机 ...

  4. docker ubuntu镜像_macOS 下使用 Docker 搭建 ubuntu 环境

    学习网络开发过程中不想"污染"macOS,考虑到之后部署网络应用主要是与linux打交道,所以安装了 ubuntu 虚拟机以满足短期的知识学习需求.十里安装了 ubuntu 虚拟机 ...

  5. Docker - 搭建LNMP环境 - 学习/实践

    1.应用场景 主要用于学习使用docker搭建开发环境. 学习容器化技术. 以及快速搭建开发环境, 同时保持团队之间开发/测试环境相同~~~~ 2.学习/操作 1.文档阅读 Docker - 学习/实 ...

  6. 【实战】本机用docker搭建elk环境并接入frostmourne,实现监控报警效果

    本篇文章着重的是实战方面,基于本机使用docker来搭建elk环境,然后接入frostmourne来实现监控.报警.分析系统,后续会再发文来介绍如何将此监控报警发布到生产环境. 本机用docker搭建 ...

  7. mac docker搭建开发环境

    前言 刚买了一个mac本, 决定搭建一个纯docker的开发环境, 说到做到, 开始踩坑. 搭建 在搭建环境的过程中, 经历了很多错误, 例如为了令两个docker环境可以互通(如: nginx和ph ...

  8. 使用Docker搭建LAMP环境,上线wordpress

    1,环境 系统版本:CentOS Linux release 7.5.1804 docker版本:Docker version 1.13.1 主机IP地址:192.168.116.128 前提条件: ...

  9. 使用docker搭建sqli-lab环境以及upload-labs环境 xss挑战之旅环境 搭建vulhub环境

    sqli-lab环境 1)查找sqli-lab环境 docker search sqli-labs 2)拉取镜像 docker pull acgpiano/sqli-labs 3) docker ru ...

最新文章

  1. 调用torchtext报错OSError: libtorch_cpu.so: cannot open shared object file: No such file or directory
  2. 如何同时启动多个Tomcat服务器
  3. 玩转springboot:实现springboot自定义拦截器
  4. char转成string_真没想到,一个小小的String居然还有这么多窍门?
  5. 【大学课程】计算机组成原理知识点
  6. Linux网络编程——连接和面向连接的协议之间没有区别
  7. 揭秘!文字识别在高德地图数据生产中的演进
  8. 安装php的mongodb扩展
  9. 纯新手DSP编程--5.29--基础类DSP模块 API
  10. 更改android的avd的存储路径
  11. Tomcat JVM参数配置和自启动配置
  12. OEA ORM 框架中的冗余属性设计
  13. 基于python的贪吃蛇游戏设计论文_《贪吃蛇游戏课程设计》报告毕业设计(论文)...
  14. 【转】让你的手机成为你的电脑摄像头
  15. c语言加油站仿真实验报告,c程序队列实现模拟加油站研讨.ppt
  16. jib推送到harbor私有仓库并拉取镜像
  17. JAVA扫码点餐(1)-项目介绍
  18. 光纤收发器上的FEF功能有什么用?
  19. Oracle中多表查询再按时间倒序
  20. 小程序接入h5页面_小程序与H5如何互相跳转

热门文章

  1. 从扁鹊医术看华为数据中心智能化运维之道
  2. java打印 a b c,创建一个java程序,按顺序给出3个术语作为输入(a,b,c)打印它们的根...
  3. DayDayUp:教你一招如何在道客巴巴免费下载自己被侵权的文章
  4. Pytorch之CNN:基于Pytorch框架实现经典卷积神经网络的算法(LeNet、AlexNet、VGG、NIN、GoogleNet、ResNet)——从代码认知CNN经典架构
  5. HighNewTech:动图看1997~2019年《世界最有价值公司Top10排名》的变迁史——《Most Valuable Companies In The World》
  6. 成功解决python\ops\seq2seq.py TypeError: ms_error() got an unexpected keyword argument 'labels'
  7. BTC:简单易懂比特币之比特币的神奇——区块链技术的体现
  8. CV之IS:计算机视觉之图像分割(Image Segmentation)/语义分割算法的简介、使用方法、案例应用之详细攻略
  9. JAVA_OA管理系统(三)番外篇:Myeclipse导入Spring源码包
  10. 决策树-特征属性选择划分