Docker挂载题目

挂载CTF题目

1. 安装container
2. 挂载本地题目所在的目录
3. 用socat命令挂载到container端口(退出后中断)
4. 用nohup永久挂载题目退出容器不会中断
5. 用nc命令连接题目

此方法只能在一个局域网内可以访问。

一、在安装好的docker中新建一个镜像

docker pull 

二、用这个镜像创建一个容器(这一步可以和挂载本地目录同时进行)

docker run -it -v 本地目录:容器目录 --name   /bin/bash

eg:

docker run -it -v /home/yrl/Desktop/pwn/static-x86:/home/yrl --name CTF ubuntu:16.04 /bin/bash



  直接就进入容器中,我们可以查看一下刚才挂载目录是否存在:



  先exit退出容器,至此,就多了一个名为CTF的容器,可以用docker ps -a查看所有容器,docker ps查看运行中的容器



  这里就挂载完成,用docker start (docker start 876a)启动容器,docker exec -it 876 bash进入刚才的容器(exec方式进入容器,退出之后再进入仍能进入,推荐用此方法)


  你直接用“./”运行你在本地编译好的程序是运行不了的,会提示没有此文件,但是源文件可以打开:



  可以重新编译.c文件:

gcc -fno-stack-protector -z execstack -mpreferred-stack-boundary=4  -o static2 static.c

加上这些参数的作用:
#Ubuntu下面的GCC默认开启了Stack Smashing Protector, 
#如果想在这个系统中学习缓冲区溢出的原理,在编译时要加上fno-stack-protector选项, 
#否则运行时会出现*** stack smashing detected ***: xxx terminated, 
#而不是期望的Segmentation fault。同时还需要加上允许栈执行的选项。 
#-fno-stack-protector用来关闭gcc编译器gs验证码机制 
#-z execstack用来关闭ld链接器堆栈段不可执行机制

最好关闭ASLR地址随机化

  网上很多说用:sudo echo > 0 /proc/sys/kernel/randomize_va_space关闭ASLR,但本人试了会提示
bash: /proc/sys/kernel/randomize_va_space: Permission denied

可以用的命令:echo 0 | sudo tee /proc/sys/kernel/randomize_va_space  屡试不爽!
0 - 表示关闭进程地址空间随机化。
1 - 表示将mmap的基址,stack和vdso页面随机化。
2 - 表示在1的基础上增加栈(heap)的随机化。

  或者之关闭这个程序的地址随机化,其他程序不变,在编译的时候加上-no-pie就行,-pie表示开启ASLR

三、用socat命令挂载题目到容器端口

  第一次用可能容器没有socat,用apt-get update ; apt-get install socat安装

  同样上面有用到gcc 用apt-get install gcc安装,以后有用到什么再装就行了

  在文件目录下用命令socat tcp-l:9999,fork exec:./static2挂载到容器的9999端口

  这仅仅是一次性的,运行后终端会卡在这个界面,当你CTRL+C退出后挂载的题就不在了



四、如果你想你的程序即使关闭虚拟终端也可以运行的话,使用nohup命令

#首先编写一个.sh脚本
#!/bin/sh
#name:static2.sh
socat tcp-l:9999,fork exec:./static2

  退出保存后执行命令:

sudo chmod u+x ./pwn.sh
nohup ./pwn.sh &
注:nohup是永久执行,&是指在后台运行
    nohup:http://www.cnblogs.com/allenblogs/archive/2011/05/19/2051136.html
    &:http://blog.sina.com.cn/s/blog_963453200102uya7.html
    区别:http://blog.csdn.net/zhang_red/article/details/52789691

五、用nc 连接题目:

  用ifconfig查看容器IP。预先用apt-get install net-tools安装

输入命令:nc 172.17.0.2 9999




   挂载题目成功!

你的支持是我最大的动力!

支付宝
微信

你可能感兴趣的:(Docker挂载题目)