전체 글 (186) 썸네일형 리스트형 (glibc 2.23) free 힙의 할당한 메모리를 해제할 때 사용되는 함수이다 전체 코드 아래 더보기 더보기 void __libc_free (void *mem) { mstate ar_ptr; mchunkptr p; /* chunk corresponding to mem */ void (*hook) (void *, const void *) = atomic_forced_read (__free_hook); if (__builtin_expect (hook != NULL, 0)) { (*hook)(mem, RETURN_ADDRESS (0)); return; } if (mem == 0) /* free(0) has no effect */ return; p = mem2chunk (mem); if (chunk_is_mmapped (p)) /* rel.. (glibc 2.23) do_check_free_chunk 전체 코드는 아래 더보기 더보기 /* Properties of free chunks */ static void do_check_free_chunk (mstate av, mchunkptr p) { INTERNAL_SIZE_T sz = p->size & ~(PREV_INUSE | NON_MAIN_ARENA); mchunkptr next = chunk_at_offset (p, sz); do_check_chunk (av, p); /* Chunk must claim to be free ... */ assert (!inuse (p)); assert (!chunk_is_mmapped (p)); /* Unless a special marker, must have OK fields */ if ((unsigned long.. ChildFSB 25byte만 가지고 fsb을 통해 익스해야되는 문제이다 fsb가 발생하고 카나리 1byte 덮을 수 있다 첫 fsb에서는 libc_start_main함수 leak하고 stack_chk_fail함수 2byte overwrite해서 다시 main으로 가도록 했다 그담에 onshot가젯으로 libc_start_main got주소 하위 3byte를 덮고 stack_chk_fail함수 got를 libc_start_main plt주소로 덮었다 from pwn import * p = remote("ctf.j0n9hyun.xyz", 3037) #p = process("./childfsb") libc = ELF("libc.so.6") #gdb.attach(p) cnry = 0x601020 start_main = 0x6.. hackCTF / Unexploitable #3 main함수에서 fgets를 통해 입력을 받으면서 bof가 터지고 rdx를 컨트롤할 가젯이 없어 rtc를 사용하기로 했다 leak하기 위해 fwrite을 사용 할 경우 rcx에 stdout의 주소를 pop rdi 가젯과 magic의 mov rcx, [rdi]를 차례대로 사용해 인자를 설정해주었다 뭐에 홀려서 그랬는지 모르겠는데 0x90다음에 0x100으로 넘어가는걸로 헷갈려서 0xa0만큼의 데이터만 사용해서 문제를 풀었다… ( ㅂㅅ쉨;) 지금 write up을 쓰면서 보니까 leak하고 다시 fget할 만큼 데이터를 충분히 받을 수 있었다... from pwn import * #context.log_level = 'debug' p = remote("ctf.j0n9hyun.xyz", 3034) #p = p.. UTCTF 2022 / smol Rating 높은 줄 모르고 까불다 1문제 풀고 도망쳤다.... gets함수로 bof가 터지고 fsb가 터진다 stack_fail_chk의 got주소를 get_flag로 쓴 뒤 카나리를 변조하여 stacK_fail_chk가 호출 되어 쉘을 띄우도록했다 1337UP LIVE CTF 2022 후기 이번 주 첫 CTF도 끝나기 막바지에 들어와서 풀었다 그 덕분에 5문제 중 4문제를 풀었고 마지막 문제는 바이너리를 열어보지도 못했다 cake문제에서 시간을 좀 많이 쓴 것 같다 항상 거의 코드도 제대로 분석하지 않고 무지성 디버깅으로 풀려는 습관이랑 영화나 유튜브 보면서 CTF 하는 안 좋은 습관을 좀 고쳐먹어야겠다... 문제는 전체적으로 libc가 주어졌기 때문에 번거로움이 덜했다 Easy Register 안걸려있는 보호기법만 보더라도 ret2shellcode문제일 것이라고 짐작이 가능하다 main함수에서 easy_register()함수를 호출하는데 v1배열(스택)의 주소를 출력해주고 gets함수로 입력받는다 from pwn import * p = remote("easyregister.ctf.inti.. ptrace 보호되어 있는 글입니다. UMDCTF 2022 후기 접근 방법을 알 것 같은데 못 푼 문제와 접근조차 모르는 flask 관련된 문제가 나왔다 Legacy blind rop인줄 알았다;; traceback를 보면 python으로 작성된 것을 알 수 있고 python2 input 취약점을 활용한 문제이다 ( 참고 https://www.geeksforgeeks.org/vulnerability-input-function-python-2-x/) Classic Act fsb로 stdout주소와 canary 릭하고 bof로 ret 주소에 oneshot 가젯 넣어서 푼 문제다 main함수에서는 단순 vuln함수를 호출한다 fsb와 bof가 터진다 payload를 작성할 때 조건문에서 strncmp로 문자열과 동일한지 검사를 수행한다 from pwn import * p .. 이전 1 ··· 15 16 17 18 19 20 21 ··· 24 다음