「Pwn」粗浅分析 House Of Muney
· 12 min read
前几天 ZBR 发了这个 repo,我寻思没听过,看着攻击能力还挺强的,于是浅浅分析一下。
简单来说,这个 house 能做这样一件事:在没有泄露的情况下绕过 ASLR 实现代码执行。
而它的利用条件如下:
- Partial RELRO / No RELRO —— 它需要修改 .dynsym 去修改 dlresolve 结果
- 可以分配较大的堆 —— 要使其由 MMAP 分配
- 能够改写这个堆的 prev_size 和 size 字段,使得 IS_MMAPED 位被改写
本文将基于 2.31 的环境,复现 Docker 可以使用下面的 Dockerfile:
FROM ubuntu:20.04
ENV DEBIAN_FRONTEND noninteractive
# Update
RUN apt-get update -y && apt-get install socat -y gdb vim tmux python3 python3-pip
# General things needed for pwntools and pwndbg to run
RUN apt-get install git build-essential libssl-dev libffi-dev libxml2-dev libxslt1-dev zlib1g-dev patchelf python3-dev -y
RUN pip3 install pwn
# Install pwndbg
RUN git clone https://github.com/pwndbg/pwndbg && cd pwndbg && ./setup.sh && cd ../
RUN echo "set auto-load safe-path /" >> /root/.gdbinit
# Challenge files to ADD
RUN git clone https://github.com/mdulin2/house-of-muney
# Fixes the loader and recompiles the binary for us :)
RUN cd house-of-muney && ./compile.sh