一直很头疼环境的问题,需要目标环境的glibc版本是2.27,而我的是2.23
如果开启第二个虚拟机占用内存太大,所以我选择用docker
于是终于找到了能在libc2.27下工作的gdb插件pwngdb(注意不是那个pwndbg)
所以这个镜像可以作为Tcache机制题目的本地测试容器
GitHub
docker镜像:链接:https://pan.baidu.com/s/1eCIbJl3Ig9LeFA2DRlQgLA 提取码:l0pw
使用方法:
- 从GitHub上下载全部镜像
- 向docker中导入镜像
- 使用
docker run
命令创建容器,注意在启动命令中加上--cap-add sys_ptrace
,这样是为了能让gdb去attach到进程 - 使用docker cp命令将题目复制到容器中
- 使用
ifconfig
命令查询ip - 使用
socat tcp-l:[port],fork exec:[filepath]
开启监听
写完pwn脚本想要调试的时候,可以用remote(ip,port)
连接到docker,然后在想要停下的地方写下raw_input(),然后再开启一个终端使用docker exec
命令进入该容器中,使用gdb attach [PID]
命令附加进程,然后下断点,然后进行调试
关于pwngdb的命令:https://github.com/scwuaptx/Pwngdb
其中,heap命令被覆盖,也就不存在这个指令了,不过heapinfo这个指令还不错
exp
#! /usr/bin/env python2
# -*- coding: utf-8 -*-
# vim:fenc=utf-8
#
import sys
import os
import os.path
from pwn import *
context(os='linux', arch='amd64', log_level='debug')
#p = process('./easy_heap')
p = remote('172.17.0.2',8888)
libc = ELF('./libc-2.27.so')
def