반응형

touch Dockerfile로 파일 생성(파일명: Dockerfile)

-gdb-peda로 설치(heap pluigin 포함)

=> 주로 heap을 볼때는 pwndbg를 활용 (peda사용시 size가 1씩 차이남)

 

스크립트가 뭔가 박살나있지만.. 돌아가긴하니까...괜찮겠지..?

FROM ubuntu:18.04

ENV PATH="${PATH}:/usr/local/lib/python3.6/dist-packages/bin"
ENV LC_CTYPE=C.UTF-8

RUN apt update
RUN apt install -y \
    gcc \
    git \
    python3 \
    python3-pip \
    ruby \
    sudo \
    tmux \
    vim \
    wget \
    netcat \
    git \
    tar \
    gzip \
    curl \
    wget \
    zsh \
    gdb \
    libssl-dev \
    libffi-dev \
    build-essential

# install pwndbg
WORKDIR /root
RUN git clone https://github.com/pwndbg/pwndbg
WORKDIR /root/pwndbg
RUN git checkout 2023.03.19
RUN ./setup.sh

# intstall gdb-plugins
WORKDIR /root
RUN git clone https://github.com/apogiatzis/gdb-peda-pwndbg-gef.git
WORKDIR /root/gdb-peda-pwndbg-gef
RUN ./install.sh

# install pwntools
RUN pip3 install --upgrade pip
RUN pip3 install pwntools

# install one_gadget command
RUN gem install one_gadget

WORKDIR /root

 

이미지 빌드/컨테이너 실행/ 쉘 실행

IMAGE_NAME=ubuntu1804 CONTAINER_NAME=my_container; \
docker build . -t $IMAGE_NAME; \
docker run -d -t --privileged --name=$CONTAINER_NAME $IMAGE_NAME; \
docker exec -it -u root $CONTAINER_NAME bash

 

추후에 본인은 python2를 즐겨써서 추가해주었음

 

로컬에서 docker 내부로 파일 옮기기

docker cp /path/to/host/file.txt container_name:/path/inside/container/file.txt

 

docker에서 로컬로 파일 옮기기

docker cp container_name:/path/inside/container/file.txt /path/to/host/file.txt

 

특정 libc를 사용해야할 경우

export LD_PRELOAD=$(realpath ./libc-2.27.so)

 

20.04설치시 timezone때문에 build 안될때 아래의 내용 추가

RUN apt update && \
    apt-get install -yq tzdata && \ 
    ln -fns /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

 

docker내부에서 peda를 사용할때, heapinfo 와 같은 heap관련 명령어가 안될시에 아래의 링크로 들어가서 pwngdb를 설치해주면 사용할 수 있어진다.

https://github.com/scwuaptx/Pwngdb

 

GitHub - scwuaptx/Pwngdb: gdb for pwn

gdb for pwn. Contribute to scwuaptx/Pwngdb development by creating an account on GitHub.

github.com

 

docker 내려가 있는 상태에서 명령어

docker run -d -t --privileged --name=ubuntu1804 ubuntu1804:1.0; \
docker exec -it -u root ubuntu1804 bash

gdb.attach() 시에 기본 gdb가 아닌 plugin으로 올리려면 아래와 같은 형식으로.

gdb.attach(p, gdbscript="source /path/to/peda.py")

 

peda를 주로 사용하는데 heap명령어가 안되어서 pwngdb를 추가하여 구성한 .gdbinit

#source ~/peda/peda.py
#source ~/Pwngdb/pwngdb.py
#source ~/Pwngdb/angelheap/gdbinit.py
#for heap commands

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

define init-peda
source ~/peda/peda.py
end
document init-peda
Initializes the PEDA (Python Exploit Development Assistant for GDB) framework
end

define init-pwndbg
source ~/.gdbinit_pwndbg
end
document init-pwndbg
Initializes PwnDBG
end

define init-gef
source ~/.gdbinit-gef.py
end
document init-gef
Initializes GEF (GDB Enhanced Features)
end

 

 

-ref-

https://infosecwriteups.com/pwndbg-gef-peda-one-for-all-and-all-for-one-714d71bf36b8

https://github.com/apogiatzis/gdb-peda-pwndbg-gef

https://learn.dreamhack.io/106#2

반응형

'System Hacking' 카테고리의 다른 글

heap tutorial  (0) 2024.05.10
heap overlapping  (0) 2024.05.09
computer structure  (0) 2023.09.10
pwnable.kr - flag  (0) 2023.09.10
basic_heap_overflow  (0) 2023.08.22

+ Recent posts