1. 미러서버 변경
apt 으로 패키지를 다운받을때 쓰이는 서버입니다. 속도증가를 위해 카카오 미러서버로 바꿔줍시다.
sudo vi /etc/apt/sources.list
들어가서 :%s/archive.ubuntu.com/mirror.kakao.com 명령모드로 입력한 뒤, :wq 입력해서 저장하고 나오기.
archive.ubuntu.com <- 이 부분은 다를수도있으니, 각자 확인해보자.
sudo apt-get update
업데이트해준다.
2. 디버거 세팅
바이너리파일 동적 디버깅할때 주로 pwndbg, peda, gef 등 gdb 의 업그레이드 버전을 사용한다.
콘솔기반으로 제작되었는데, GUI 로 된것도 있으니 원한다면 찾아보길 바란다.
gdb 가 없다면 설치
sudo apt-get install gdb
원래는 하나만 설치해서 쓰는데, 세개를 구분해서 쓰는 방법도 있다.
medium.com/bugbountywriteup/pwndbg-gef-peda-one-for-all-and-all-for-one-714d71bf36b8
pwndbg 설치
#git 이 없으면 -> sudo apt-get install -y git
git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh
cd ~
mv pwndbg ~/pwndbg-src
echo "source ~/pwndbg-src/gdbinit.py" > ~/.gdbinit_pwndbg
peda 설치
#git 이 없으면 -> sudo apt-get install -y git
git clone https://github.com/longld/peda.git ~/peda
echo "source ~/peda/peda.py" >> ~/.gdbinit
gef 설치
#git 이 없으면 -> sudo apt-get install -y git
wget -q -O ~/.gdbinit-gef.py https://github.com/hugsy/gef/raw/master/gef.py
echo source ~/.gdbinit-gef.py >> ~/.gdbinit
구별해서 사용하기위한 세팅
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
이 내용을 ~/.gdbinit 에 입력한다.
sudo nano /usr/bin/gdb-peda
#!/bin/sh
exec gdb -q -ex init-peda "$@"
sudo nano /usr/bin/gdb-pwndbg
#!/bin/sh
exec gdb -q -ex init-pwndbg "$@"
sudo nano /usr/bin/gdb-gef
#!/bin/sh
exec gdb -q -ex init-gef "$@"
/usrbin/gdb-gef,gdb-pwn,gdb-peda 에 각각 내용을 써준다. (nano 말고 편한 텍스트에디터로 써도된다)
sudo chmod +x /usr/bin/gdb-*
실행권한을 준다.
gdb-peda
gdb-pwndbg
gdb-gef
위 3가지명령어로 gdb 를 구별해서 실행시킬수 있다. (명령어 이름은 바꿀 수 있다.)
근데 나는 명령어하나를 안썼는지 pwndbg 에서 에러가 난다. pwndbg 는 잘 쓰지도 않고,
source ~/peda/peda.py
source ~/.gdbinit-gef.py
그래서 ~/.gdbinit 에 저 내용을 써서 gef 랑 peda 랑 같이 사용하고있다. 아직까진 별다른 오류가 나타나진 않는다.
3. python & pip 세팅
sudo apt-get install python3
sudo apt-get install python3-pip
python 버전 3 의 pip 를 다운받는다. python 2 버전 써도 상관없지만 3이 더 좋다고 한다.
추후 업로드..
pip3 install pwntools
4. 유용한 pwnable 툴
ROPgadget
pip3 install ropgadget
ROPgadget --binary [바이너리 이름] | grep 'pop rdi'
이런식으로 가젯을찾을때 사용한다.
one_gadget
sudo apt install ruby
gem install one_gadget
one_gdaget [바이너리 or libc]
원샷가젯 목록을 찾아준다.
sudo apt install binutils-multiarch
i386 아키텍쳐 라이브러리에서 찾을땐, 저걸로 설치해야한다.
5. 32bit 라이브러리 설치
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libstdc++6:i386
출처: https://techlog.gurucat.net/322 [하얀쿠아의 이것저것 만들기 Blog]
64bit 운영체제에서 32bit 바이너리를 실행하려면 i386 arch 를 활성화시키고 라이브러리를 설치해야한다.
추후 업로드...