一些经常用到的二进制环境整理[不定期更新]

25 篇文章 4 订阅
18 篇文章 4 订阅

一些经常用到的二进制环境


内容来自网络,给以后换电脑时候快速配置做个记录

下载和安装和基本配置

kali下载

kali下载:https://www.offensive-security.com/kali-linux-vm-vmware-virtualbox-image-download/
直接下载vm虚拟机就可以

修改ip
vi /etc/network/interfaces 
inface eth0 inet static    设置 eth0 使用默认的静态地址
address 192.168.4.200   设置 eth0 的ip 地址
gatework 192.168.4.4    配置当前主机的默认网关
netmask  255.255.255.0   设置 eth0 的子网掩码
/etc/init.d/networking restart   重启网卡

或者直接:ifconfig eth0 192.168.5.40 netmask 255.255.255.0

vmtools

参考:https://www.jianshu.com/p/5b46c6833bdd
三步即可

apt update
apt install open-vm-tools-desktop fuse
reboot
重新安装vmtools

共享文件夹无法使用的时候需要重安
共享文件夹位置:/mnt/hgfs

tar zxvf xxx.tar
cd xxx
xxx.pl
安装pwntools

直接 : pip install pwntools

验证:

python
>>> import pwn
>>> pwn.asm("xor eax,eax")
'1\xc0'
docker

参考:https://blog.51cto.com/11834557/2309885

//step 1
apt-get update
apt-get install -y apt-transport-https ca-certificates
apt-get install dirmngr

//step 2
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 \
--recv-keys 58118E89F3A912897C070ADBF76221572C52609D

//step 3
echo 'deb https://apt.dockerproject.org/repo debian-stretch main' > \
/etc/apt/sources.list.d/docker.list

//step 4
apt-get update
apt-get install docker-engine  //这一步得等很久。。

//step 5
service docker start //启动docker服务即可

初级调试-ida+docker远程调试

初级调试方法简介

参考:Linux pwn入门教程(0)——环境配置

适合刚入门的新手,可以调试一些初级的栈溢出类的题目,调试堆相关题目有些麻烦(因为堆题目依赖libc版本)而这两个docker中只有一个版本libc

这个环境是vmware中装kali的虚拟机,然后通过nat链接win主机,NAT配置见:链接

然后再kali中安装docker,导入两个linux镜像,分别是32位和64位,分别用来调试32位程序和64位程序

两个docker的镜像下载链接 密码:bcd6,来自i春秋博客中

每次调试需要根据题目不同打开对应的docker,然后将题目和ida的debug server拷贝进去,运行ida的debug server,便可调试题目。

docker导入镜像

参考:https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=42239&highlight=pwn%E5%85%A5%E9%97%A8

cat ubuntu.17.04.amd64.tar | docker import - ubuntu/17.04.amd64     //导入镜像
docker run -it -p 23946:23946 ubuntu/17.04.amd64 /bin/bash   //启动镜像的一个shell,并且将IDA调试服务器监听的23946端口转发到本地的23946端口。
常用docker命令
docker container ls -a   //查看docker容器
docker ps -a   //同上
docker stop id //停止容器
docker rm id   //删除容器
docker rmi id  //删除镜像
docker container cp test.txt id:/root/test.txt  //docker里拷贝东西

docker exec -it id /bin/bash   //开启一个新shell

docker run --security-opt seccomp:unconfined -it -p 23946:23946 ubuntu/17.04.amd64 /bin/bash  启动docker时关闭远程端口保护,否则无法远程调试,前面的端口号是docker的,后面是主机的
ida远程调试
  1. 先按上面方法开启一个docker
  2. 去ida目录下的dbgsrv文件夹找到对应的server文件,比如64位linux docker就是linux_server64
  3. 将对应的server文件传到linux docker中,可以使用docker container cp命令
  4. 然后docker中chmod +x ./linux_server64 赋予执行权限并执行
  5. ida中上方导航栏选择Debugger->run->remote linux debugger
  6. host name填上所在ip(这里是kali的ip,而不是docker的ip,如果不行确保端口映射没问题,排除占用等,要是用关闭端口保护的docker run参数。)
  7. 然后就可以直接调试ida正在打开的文件
开启tcp监听
socat tcp-listen:10001,reuseaddr,fork EXEC:./题目,pty,raw,echo=0

进阶调试-pwndocker

初级调试方法简介

进阶的调试方法适合调试堆相关题目,使用我同事skysider的docker项目pwndocker。里面集成了各种pwn会用到的工具,无需自己下载,打开即用,非常方便。

pwndocker下载

dockerhub:https://hub.docker.com/r/skysider/pwndocker

docker pull skysider/pwndocker
pwndocker启动
docker run -d  --rm -h breeze --name breeze -v /mnt/hgfs/share:/ctf/work -p 23946:23946 --cap-add=SYS_PTRACE skysider/pwndocker
  • -d:后台运行
  • –rm:停止后自动删除
  • -h:主机名breeze
  • –name:docker名字breeze
  • -v:将kali的/mnt/hgfs/share挂在再docker中的/ctf/work目录(share也是kali和物理机的共享目录,三机共享)
  • -p:端口映射(没啥用,这时已经不用ida远程调试了,有些题目带端口的可以用)
  • –cap-add:增加一个参数,否则调试会出问题
pwndocker内置工具

pwndocker内置常见的几乎所有pwn所需工具,如dockerhub中介绍的:

pwntools、pwndbg、ROPgadget、one_gadget等等

但最终要的是,pwndocker中有多个libc版本,在根目录中可以看到,编译了对应的32位和64位的版本,带有调试符号,可以直接通过pwntools修改链接库的形式调试任何libc依赖的题目。

使用方法注意一定要带ld.so文件

from pwn import *
context(arch='amd64', os='linux')
context.terminal=['tmux','splitw','-h']
p = process(["/glibc/2.23/64/lib/ld-2.23.so","./题目"],env={"LD_PRELOAD":"/glibc/2.23/64/lib/libc-2.23.so"})
gdb.attach(p)
pwndbg使用方法

教程链接:

敬告

由于题目给的libc不带调试符号,所以大部分情况下都用pwndocker中的glibc来调试。这时调试的时候调试的差不多就行了,不用非要调试到最后一步,搞懂原理,地址什么的都正确就换回题目的libc。有时会有各种各样的bug,让你本来没问题的exp就是执行不了,有时候有必要再准备个非docker的虚拟机,里面有对应版本的libc,和pwntools来测试exp。遇到过一些情况是exp没问题,就是在docker中无法成功getshell,调试都能看到执行到system(’/bin/bash’)。但关了调试器还是无法成功getshell,玄学。

gdb相关

gdb安装:

apt-get installa gdb
pwndbg & pwngdb

这两个插件做堆类pwn 题非常方便。推荐一起使用,github 下载:

pwndbg:https://github.com/pwndbg/pwndbg
直接运行里面的setup.sh即可,中途可能会报git 的错退出,需要运行一下git init

pwngdb:https://github.com/scwuaptx/Pwngdb
直接按照readme 操作即可:

cd ~/
git clone https://github.com/scwuaptx/Pwngdb.git 
cp ~/Pwngdb/.gdbinit ~/

操作完需要根据自己已有插件简单修改一下:

source /root/pwndbg-dev/gdbinit.py
source /root/Pwngdb-master/pwngdb.py
source /root/Pwngdb-master/angelheap/gdbinit.py

define hook-run
python
import angelheap
angelheap.init_angelheap()
end
end
gdb-peda

调试内核可能用到,longld/peda
执行之前记得先改目录名字:

echo "source ~/peda/peda.py" >> ~/.gdbinit

docker相关

dockerfile 制作镜像

dockerfile 省略,见菜鸟教程,我一般就一句话包括一个基础镜像,然后剩下的启动容器之后再手动安装:

FROM ubuntu:18.04

dockerfile 制作成镜像:

docker build -t xx:v3 .
docker run -d --rm -h breeze --name ubuntuN  -v D:\share:/ctf/work -it --cap-add=SYS_PTRACE ubuntu1804 /bin/bash

将容器commit 为镜像

docker commit 容器名 镜像名:版本
docker tag 镜像名  chenaotian/镜像名:版本  #重命名

push 镜像到dockerhub:

docker login  
docker push chenaotian/image
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值