system/writeup 썸네일형 리스트형 nullcon hackim 2019 hackim shop nullcon hackim 2019 hackim shop nullcon hackim 2019 hackim shop나한테는 정말 신기한 문제였다.처음에는 libc를 안줘서 출제진이 실수를 했나.. 생각했는데 libc version까지 구해야 하는 문제였다. 취약점은 명확하다.전역 변수에서 free후 값을 초기화를 안시키기 때문에 dangling pointer 상황이 발생하여 fastbin dup이 가능해진다. 처음에는 fastbin dup이라고 생각했는데 libc를 leak해보니 2.27이어서 tcache dup으로 풀었다. 별반 차이가 없긴 하지만.. fastbin dup으로 got의 주소를 leak하여 libc version을 알아낸 후 원래 하던 것처럼 익스를 하면 된다. xfrom pwn impor.. 더보기 2016 bctf memo memo 2016 bctf memorealloc을 0x80 ~ 0x400 범위로 해줄 수 있다. -> largebin 딱걸치네.. ㅎㅎ name 입력 부분에서 off by one 취약점 발생 -> next chunk size 수정 가능 흠.. 여기서 free가 없어서 생각에 잠겼는데 삽질좀 해보니 realloc함수 안에 _int_free가 들어 있어서 이걸로 bin control이 가능하더라. large chunk를 할당할 때 fastbin에 chunk가 존재하면 fastbin의 chunk가 smallbin으로 이동하는데 이때 inuse bit가 존재하지 않으면 unlink가 일어난 후 consolidate를 해 smallbin으로 이동한다. xxxxxxxxxx else { idx = largebin_i.. 더보기 2014 hitcon sktof sktof 2014 hitcon sktof1번메뉴 size 자유 malloc2번메뉴 무한 write3번메뉴 index 거의 자유 free 이 문제는 unsafe_unlink로 풀긴 했지만 여러가지 방법으로 풀 수 있을 것 같다.취약점들이 워낙 방대하기 때문에.. 나는 먼저 unosrtedbin range heap A, B 2개를 선언한 후 A에서 overflow를 일으켜 fake chunk를 만들고 B의 prev_size, size를 조작해서 unsafe_unlink를 일으켰다. 그 후 free_got를 puts_got로 overwrite하여 libc leak, strlen_got를 system_libc로 overwrite하여 shell을 땃다. 근데 github에서 받았을 때 libc가 없었어서 이렇게.. 더보기 pwnable.kr crypto1 보호되어 있는 글입니다. 더보기 2017 rctf aircraft aircraft 2017 rctf aircraft취약점은 쉽지만 익스플로잇이 너무 길다.. 중간중간에 짜다가 까먹어서 머리가 터질뻔했다. 이런 힙문제는 노트에 적어가면서 해야하나.. 이 바이너리에서 내가 찾은 취약점은 총 세개이다. uaffastbin dupout of bound 처음에 oob로 풀려고 했는데 free후 next chunk에 생기는 prev size에 접근할 때 세폴이 떠서 이 방법으로는 익스를 못했다.. UAF위 구문에 의해서 UAF를 다룰 수 있다.어떤 airport로 옮겨갔는지 출력해준다. plain chunk size는 0x48이므로 이를 free한 후 airport를 0x48만큼 할당하여 free_func(pie)를 leak할 수 있다. 동일한 방법으로 heap도 leak이 가능.. 더보기 2019 codegate aeiou aeiou 2019 codegate aeiou힙문제인줄 알고 엄청 고민하다가 대회 끝나갈때쯤 god_the_reum 풀면서 갑자기 아는 형이 2017 codegate hunting 풀 때 처음에 thread를 이용한 canary bypass로 풀려고 했던게 생각나서 해봤는데 대회 끝나고 나서야 푸네요 ㅠㅠㅠㅠㅠ 본선 1등차이 하... 이 문제를 풀기 위해서는 쓰레드에 관한 개념을 알아야 한다. 리눅스는 x86: gs, x86_64: fs 레지스터로 TLS를 관리한다. TLS란 쓰레드를 관리하기 위한 전역변수이며 해당 변수의 0번 째 인덱스에는 TCB(Thread Control Block)의 주소가 저장된다.TCB란 말그대로 해당 쓰레드를 관리하기 위한 구조체라고 보면 된다. xxxxxxxxxxtypede.. 더보기 2017 rctf rnote RNote 2017 rctf rnote1byte_overflow1byte_overflowstartoverwrite_heap_addrlibc_leakfastbin_dupfastbin_dup_into_malloc from pwn import *e = ELF('./RNote')#s = process(e.path)s = process(e.path, env={'LD_PRELOAD':'./libc.so.6'})l = ELF('./libc.so.6')ru = lambda x: s.recvuntil(x)sl = lambda x: s.sendline(x)p = lambda : pause()io = lambda : s.interactive()def menu(sel): ru(': ') sl(sel)def add(si.. 더보기 2019 insomnihack onewrite onewrite 2018 insomnihack onewritePIE가 걸려있다.. 근데 바이너리에서 PIE를 leak해주니까 상관없다! 둘 중 하나를 leak해주고 1byte aribtrary write가 가능하다. 처음에 stack을 leak한 후 ret을 덮어씌워 돌아가 pie를 leak하면 둘 다 leak할 수 있다. 하지만 이제부터 어려워지는데 이런 상황이 계속된다면 ret만 한 번 바꿀수 있지 다른 곳에 값을 못쓴다.. 근데 do_leak 함수의 시작 부분에 가보면 do_leak의 주소값을 rbp+0x10에 넣어준다. 즉, 저 근방으로 jump하면 rbp+0x10의 do_leak, do_overwrite를 들어갈 때 남기는 do_leak, 총 두개가 스택에 남아 한 번의 write를 할 수 있는.. 더보기 이전 1 ··· 5 6 7 8 9 10 11 ··· 13 다음