
일단 IDA로 보면 스택 구조를 알 수 있다.
name 부분은 read로 0xA만 입력받기 때문에 영향을 받지 않고, v5부터 넣는 부분이 scanf를 사용하기 때문에 BOF가 발생한다.
구조는 rbp-0x30으로 어떤 스택 구조인지 알 수 있다.
근데 check에서 길이 검증을 하긴 하는데, \x00으로 길이를 0xF로 제한하는 것을 우회하면 된다.

local에서는 정상적으로 쉘이 따짐

하지만 get_shell의 시작주소를 그대로 주면 remote에서 쉘이 안 따지는 문제가 있는데..
return address를 덮는 주소를 stack을 설정하는 push rbp move rbp, rsp 이후로 설정해봤다.
(stack align 문제가 있을 수 있다고 해서)

정상적으로 remote에서 진짜 플래그를 얻을 수 있었다.
| [Dreamhack] Python Start (Pwnable) (3) | 2025.07.24 |
|---|---|
| [Dreamhack] cmd_center (pwnable) (0) | 2025.04.21 |
| [Dreamhack] cpp_string (0) | 2025.04.21 |
| Dreamhack CTF Season 7 Round #6 (🌱Div2) struct person_t (0) | 2025.03.30 |
| [Dreamhack] Firmware Extraction Practice (1) | 2024.03.05 |