전체 글 156

[diary] 순천향대학교 CTF (YISF) 후기

예선 순천향대 정보보호페스티벌이 아니라 순천향대학교 알고리즘 페스티벌이였다. misc 문제의 비중이 정말정말 컸으며 해킹문제 한문제도 안풀고 misc만 4문제풀고 본선오신분들도 많다. 나는 2폰 1립 2미슥 했는데 22등이였다. 본선은 18등까지라 본선 못갈줄알았는데 어찌어찌 해서 본선에 가게 되었다. 포너블 문제 자체는 나쁘지않았다. 150점짜리도 풀수있었는데 언링크 실수해서 못풀었당. 근데 힌트를 솔버가 있는문제에도 준다는것, 그리고 힌트를 정말 빡치게 준다. 어떤기법 + 어떤기법 = 쉘 획득! 이게 힌트였다. 그냥 제일 큰 문제는 미스크의 비중이 너무 크고, 운영이 정말 미숙했다는 것 정도? 옆에 형이나 친구들이 웹은 게싱이였다고들 하고... 웹이 난이도가 어려운거같긴 했다. 그리고 포렌식 50점짜..

Daily Life/diary 2019.08.19

[hackCTF] babyheap ( write-up )

재밌는 fastbin dup into stack 문제이다.빡센 특징이 한가지가 있다.그건 바로 malloc이 6번까지밖에 안된다는것이다.- 그래서 malloc free해서 unsorted bin leak은 힘들다.- malloc hook을 덮어도 다시 malloc 할 수가 없어서 다른방법으로 malloc을 해야 한다.그래서 show함수에 있는 oob 취약점으로 leak 해야한다. show함수에 있는 oob 취약점과 특별한 방법으로 malloc해서 풀면 된다.여기서 오늘 알아가는건, free할때 (dubble free 등) 오류가 나면 내부 루틴에 의해 malloc이 된다는것이다. 간단한 fastbin dup into stack이라 딱히 설명할건 없고, 그냥 익스코드 남기고 간당!12345678910111..

[HITCON] Sleepy Holder ( write-up )

1. Mitigation 123456[*] '/home/juntae/ctf/hitcon/SleepyHolder/SleepyHolder' Arch: amd64-64-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x400000)cs그냥 평범하게 미티게이션이 걸려있다.특이한 점이라면 RELRO가 Partial이여서 GOT overwrite가 가능하다는거 정도?힙 문제를 조금 풀다보니까 이제 힙문제에서 미티게이션은 스택에 비해 별로 중요하지 않은것 같다는 생각이 든다. 2. Analysisurandom에서 값을 4개를 뽑아와서 0xFFF와 and연산을 하고, 그 값 만큼 malloc해준다.- heap주소를 브루트포싱 할 ..

[Rctf] Rnote ( write-up )

1. Mitigation 123456[*] '/home/juntae/ctf/Rctf/Rnote/RNote' Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x400000)cs적당적당히 미티게이션이 걸려있다. 2. Analysis12345678910ssize_t menu(){ write(1, "***********************\n", 0x18uLL); write(1, "1.Add new note\n", 0xFuLL); write(1, "2.Delete a note\n", 0x10uLL); write(1, "3.Show a note\n", 0xEuLL); write(1, "4.E..

[0ctf] babyheap ( write-up )

1. mitigation 12345678juntae@ubuntu:~/ctf/0ctf/babyheap$ checksec babyheap [*] '/home/juntae/ctf/0ctf/babyheap/babyheap' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE enabledjuntae@ubuntu:~/ctf/0ctf/babyheap$ cs미티게이션이 초록초록 하다. ㅠㅠ 2. anaysis12345678910if ( fd > 64) >> 46) + 0x10000) & 0xFFFFFFFFFFFFF000LL);v3 = (v5 - 3712 * (0x8D3DCB08D3DCB0DLL * (v5 >> 7) >>..

[Heap] fastbin dup consolidate

1. fast chunk 2개 할당 2. 첫번째 fast chunk를 free 3. large bin size의 chunk 하나 할당-malloc_consolidate()함수가 trigger되고, (2)번에서 free한게 unsorted bin으로 감.-즉, (2)번에서 free한걸 한번 더 free해도 fastbin의 보호기법이 작동하지 않음.-fast-top에서 unsorted bin으로 갔기 때문. 4. (2)번에서 free했던 chunk 한번 더 free (DFB) 5. 다음 두번의 malloc은 (2)번에서 free한 주소와 같음.-unsorted bin에서 한번, fast bin에서 한번 꺼내서 총 두번까지 꺼내올 수 있음 12345678910111213first = malloc(0x30) /..

[Heap] fastbin dup-into stack

Exploit plan1. 같은 크기의 fast chunk 2개 이상 할당-0x30크기의 chunk 2개 할당2. 첫번째 fast chunk free -0x30크기의 chunk 1개 해제3. 두번째 fast chunk free-0x30 크기의 chunk 1개 해제4. 첫번째 fast chunk free (Double Free Bug)-(2)번에서 해제한 chunk 한번 더 해제5. 이전 chunk와 같은 크기의 청크 할당6. (5)번에서 할당한 chunk에 fake chunk값 작성-이전에 할당한 (chunk의 크기 + header size = 0x40)를 가진 곳에 작성해야함7. 같은 크기의 chunk 2번 더 할당8. 다음에 할당되는 chunk는 fakechunk의 주소 + 0x10 코드로 보자!12..

[HackCTF] SysROP ( write-up )

간단간단한 ROP 문제이다.특이한 점으로는 read는 있는데 출력함수가 없어서 leak을 못한다.그 대신 함수내에서 여러 gadget을 주는데, 요걸로 execve("/bin/sh",0,0) syscall하면 된다.더 특이한 점은 int 0x80을 안줘서 syscall도 못한다. 그래서 read함수 내의 syscall을 이용하면 된다!read함수 내에 syscall이 있는것을 볼 수 있다. 함수 끝에 1byte는 항상 일정하다.따라서, read함수에 got에 1byte overwrite로 \x5e(syscall)을 덮어 syscall을 호출하면 된다. 익스코드는 다음과 같다.1234567891011121314151617181920212223242526272829303132333435363738394041..

[HackCTF] Unexploitable_2 ( write-up )

유사 트릭(?) 문제이다! 일단 main 함수이다.12345678910int __cdecl main(int argc, const char **argv, const char **envp){ char s; // [rsp+0h] [rbp-10h] setvbuf(_bss_start, 0LL, 2, 0LL); setvbuf(stdin, 0LL, 2, 0LL); fwrite("Hard RTL ha? You don't even have fflush@dynstr!\n", 1uLL, 0x30uLL, _bss_start); fgets(&s, 64, stdin); return 0;}Colored by Color Scriptercs누가봐도 오버플로우로 rop하면 되는 문제이다.하지만 마땅한 출력함수가 없다. fwrite를 사..