docker搭建pwn环境
文章目录
- 拉取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环境相关推荐
- docker搭建 LNMP 环境
一.准备镜像 安装完docker后,更换完镜像源(docker的安装十分简单自行百度即可) 打开/etc/docker目录下的daemon.json 添加以下内容 { "registry-m ...
- virtualbox php mac,详解mac下通过docker搭建LEMP环境
在mac下通过docker搭建LEMP环境境 1.安装virtualbox.由于docker是在lxc环境的容器 2.安装boot2docker,用于与docker客户端通讯 > brew up ...
- apt ubuntu 指定ipv4_macOS 下使用 Docker 搭建 ubuntu 环境
学习网络开发过程中不想"污染"macOS,考虑到之后部署网络应用主要是与linux打交道,所以安装了 ubuntu 虚拟机以满足短期的知识学习需求.十里安装了 ubuntu 虚拟机 ...
- docker ubuntu镜像_macOS 下使用 Docker 搭建 ubuntu 环境
学习网络开发过程中不想"污染"macOS,考虑到之后部署网络应用主要是与linux打交道,所以安装了 ubuntu 虚拟机以满足短期的知识学习需求.十里安装了 ubuntu 虚拟机 ...
- Docker - 搭建LNMP环境 - 学习/实践
1.应用场景 主要用于学习使用docker搭建开发环境. 学习容器化技术. 以及快速搭建开发环境, 同时保持团队之间开发/测试环境相同~~~~ 2.学习/操作 1.文档阅读 Docker - 学习/实 ...
- 【实战】本机用docker搭建elk环境并接入frostmourne,实现监控报警效果
本篇文章着重的是实战方面,基于本机使用docker来搭建elk环境,然后接入frostmourne来实现监控.报警.分析系统,后续会再发文来介绍如何将此监控报警发布到生产环境. 本机用docker搭建 ...
- mac docker搭建开发环境
前言 刚买了一个mac本, 决定搭建一个纯docker的开发环境, 说到做到, 开始踩坑. 搭建 在搭建环境的过程中, 经历了很多错误, 例如为了令两个docker环境可以互通(如: nginx和ph ...
- 使用Docker搭建LAMP环境,上线wordpress
1,环境 系统版本:CentOS Linux release 7.5.1804 docker版本:Docker version 1.13.1 主机IP地址:192.168.116.128 前提条件: ...
- 使用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 ...
最新文章
- 调用torchtext报错OSError: libtorch_cpu.so: cannot open shared object file: No such file or directory
- 如何同时启动多个Tomcat服务器
- 玩转springboot:实现springboot自定义拦截器
- char转成string_真没想到,一个小小的String居然还有这么多窍门?
- 【大学课程】计算机组成原理知识点
- Linux网络编程——连接和面向连接的协议之间没有区别
- 揭秘!文字识别在高德地图数据生产中的演进
- 安装php的mongodb扩展
- 纯新手DSP编程--5.29--基础类DSP模块 API
- 更改android的avd的存储路径
- Tomcat JVM参数配置和自启动配置
- OEA ORM 框架中的冗余属性设计
- 基于python的贪吃蛇游戏设计论文_《贪吃蛇游戏课程设计》报告毕业设计(论文)...
- 【转】让你的手机成为你的电脑摄像头
- c语言加油站仿真实验报告,c程序队列实现模拟加油站研讨.ppt
- jib推送到harbor私有仓库并拉取镜像
- JAVA扫码点餐(1)-项目介绍
- 光纤收发器上的FEF功能有什么用?
- Oracle中多表查询再按时间倒序
- 小程序接入h5页面_小程序与H5如何互相跳转
热门文章
- 从扁鹊医术看华为数据中心智能化运维之道
- java打印 a b c,创建一个java程序,按顺序给出3个术语作为输入(a,b,c)打印它们的根...
- DayDayUp:教你一招如何在道客巴巴免费下载自己被侵权的文章
- Pytorch之CNN:基于Pytorch框架实现经典卷积神经网络的算法(LeNet、AlexNet、VGG、NIN、GoogleNet、ResNet)——从代码认知CNN经典架构
- HighNewTech:动图看1997~2019年《世界最有价值公司Top10排名》的变迁史——《Most Valuable Companies In The World》
- 成功解决python\ops\seq2seq.py TypeError: ms_error() got an unexpected keyword argument 'labels'
- BTC:简单易懂比特币之比特币的神奇——区块链技术的体现
- CV之IS:计算机视觉之图像分割(Image Segmentation)/语义分割算法的简介、使用方法、案例应用之详细攻略
- JAVA_OA管理系统(三)番外篇:Myeclipse导入Spring源码包
- 决策树-特征属性选择划分