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

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


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

下载和安装和基本配置

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

扫描二维码关注公众号,回复: 9525841 查看本文章

这个环境是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 redhat -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,玄学。

发布了56 篇原创文章 · 获赞 288 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/Breeze_CAT/article/details/103789151