LEVEL 2

basic_exploitation_002

pwnable
  • 문제 정보
  • 풀이 114
  • 난이도 투표 49
  • 질문 6
  • 최근 풀이자 1619
  • 댓글 81

문제 설명

Description

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

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

Format String Bug

출제자 정보

avatar
Dreamhack
대표 업적 없음

First Blood!

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

난이도 투표 49

질문 6

문제 풀이에 어려움이 있으신가요?
커뮤니티에서 문제에 대한 질문하고 답변 얻기
문제에 대해서 질문이 있습니다.
생각 순서는 이렇습니다. 우선 checksec 을 통해 운영체제를 확인하여 32bit 인것을 확인하였습니다. printf(buf); 코드를 보고 난 후, 이 부분에서 FSB 를 통해 메모리 주소값을 얻어내면 되겠구나. exit(0) 으로 끝나, ret 값이 없는건가? exit 함수는 got 에 주소값이 있다. 그럼 이 부분을 Got overwrite 를 해보자. got overwrite 를 통해서 exit_got 값 에는 get_shell 함수의 주소가 들어가면 메인함수가 실행되면서 system('/bin/sh'); 이 실행되겠지. 위와 같은 순서로 shellcode 를 작성하였습니다. 따라서 read를 통해 AAAA %p %p %p %p %p --- 를 넣어, AAAA 가 어디에 값이 들어가는지 offset 을 확인했더니, 1번째 offset 에서 값이 나오는 것을 확인할 수 있었습니다. ( 스택으로 인자를 전달해서 1번째인것인가? 라는 의문을 가졌습니다. %p 를 여러번 하였을 때, 아래와 같은 구조가 나와 어떻게 분석을 해야하지? 에 대해서도 물어보고 싶습니다.. ) image.png 그래서 이 부분에 ELF로 구한 exit의 got주소를 넣었습니다. 이후 got 주소를 출력해보았을 때, 8byte 를 차지하고 있는 것으로 보아, get_shell의 주소 ( gdb 를 통해 얻었습니다. )를 4byte 씩 나누어 1번째 offset 과 2번째 offset에 집어넣었습니다. 1번째 offset 의 경우, 앞서 구한 got의 주소를 넣은 부분의 크기만큼 빼주었고 값을 집어넣었다 생각했는데, 쉘이 EOF로 끊기고 맙니다. 질문은 아래와 같습니다. 어떤 부분에서 잘못되었나요? 위와 같이 AAAA %p %p .. 를 하였을 때, 스택 구조에 대해서 어떻게 해석을 하면 되나요?
avatar Sunja

최근 풀이자 1619

maang
전자두뇌
곰탕곰탕
대표 업적 없음
nvkiero
대표 업적 없음
eheka78
대표 업적 없음
hojune02
대표 업적 없음
avatar
Rootsquare
대표 업적 없음
황금올리브돈까스
대표 업적 없음
pwn0x01
대표 업적 없음
BISKET
대표 업적 없음
Nucobi
새싹

댓글 81

avatar
TAFKA
워게임: 50
그렇군요
daeseong1209
시스템 해킹 입문
음...
avatar
스카이넷
워게임 고인물
ez
avatar
is07king
워게임: 1
나는 바보다
avatar
나는재영
대표 업적 없음
구구구구구구구구구구구구구구구구구구구구구구구굳
avatar
Ox0ne
대표 업적 없음
근데 30초 제한은 왜 두는거임..? 30초 제한 없으면 언인텐이라도 일어나나
avatar
Beluga
워게임: 20
ez
avatar
msh1307
대표 업적 없음
어렵다
리버싱하는 범재
대표 업적 없음
지금까지 한 문제중 가장 어려웠음...
하헌진
대표 업적 없음
어려워욧