Security/CTF
[CCE2017] Blue : 본선
[CCE2017] Blue : 본선
2017.11.22이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
[withcon2017] calc - 복잡한 heap control
[withcon2017] calc - 복잡한 heap control
2017.11.03이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
[CCE2017] Blue : 예선
[CCE2017] Blue : 예선
2017.10.27이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
[SecuInside 2017] OHCE - x64 SROP
[SecuInside 2017] OHCE - x64 SROP
2017.09.16get_userinput이 제일 소스가 길어서 거기에 취약점이 있을 것 같아 집중적으로 봤는데 정작 다른 곳에 있었음... 시간을 무지 낭비함. 풀고 나서 보니까 NX가 비활성화 되어 있었다 ㅡㅡ; 어쩐지 checksec으로 봤을 때는 disable로 뜨는데 stack에 x권한이 왜 있지? 싶었더라니... 반드시 nxtest를 사용해야겠다. SROP같다.```gdb-peda$ checksecCANARY : disabledFORTIFY : disabledNX : ENABLEDPIE : disabledRELRO : disabled $ ldd ohce not a dynamic executable start addr : 0x4000B0``` Note ) 이런 바이너리는 HexLay가 이상하게 나올 수 있으니 주..
[CodeGate2014] angry_doraemon
[CodeGate2014] angry_doraemon
2017.08.24https://github.com/umbum/pwn/blob/master/exploit/cg_angry_doraemon.py code section ``c 0x08048C62``에 ``c execl('/bin/sh', ...)``가 있다. 5. Fist attack의 function pointer ``c buf()``를 이용해 여기를 호출하도록 하려 했는데 ``c if ( BYTE3(buf) != 8 )`` 로 검사하기 때문에 ``c 0x08``로 시작하는 code section을 호출할 수는 없다.여기는 훼이크다. 4. Throw mouse에서 read overflow가 발생하므로, 이를 이용해 ret addr을 조작할 수 있다.canary가 있기는 하지만, fork하므로 leak할 수도 있고 bf로 ..
[MCSC2014] tinypwn - SROP
[MCSC2014] tinypwn - SROP
2017.08.10`` 0x3``번 system call을 호출하는데, 이는 ``c read()``다.그리고 곧바로 read 결과 처음 4byte로 return하기 때문에 아주 심플한 바이너리다. ASLR과 NX가 적용되어 있기 때문에 shellcode로 리턴하는 것은 불가능.libc.so가 매핑되지 않는, 단일 바이너리이기 때문에 RTL도 불가능하다. ``` 0x8048107 : int 0x80 0x8048109 : ret `````c int 0x80`` instruction이 있기 때문에 ROP chain을 구성해 파라미터를 푸시하고 system call할 수 있다. ``c read()``는 읽은 byte 수를 eax로 리턴하기 때문에, 이를 이용해 eax를 적당히 설정하고 ``c int 0x80``으로 리턴하면 sy..
[CodeGate2014] nuclear : libpthead(send, recv, system)
[CodeGate2014] nuclear : libpthead(send, recv, system)
2017.07.31아이디어 자체는 어렵지 않았으나 `` libc``가 아닌 다른 library의 함수가 호출될거라는 생각을 못했기 때문에 꽤 헤맸다.recv buffer 초기화에 별로 신경을 안썼더니, send의 결과로 받은 값에 이전 send 결과로 받은 데이터가 포함되어 몇 byte 씩 틀어져 있거나 처음에 303031이 들어가 시간을 꽤 소모함. fork를 사용하는 standalone 방식의 서버 프로그램이다. leak``c __isoc99_sscanf()`` 실행 이후 stack context```0000| 0xffffd050 --> 0xffffd070 ("1/1\n")0004| 0xffffd054 --> 0x8049877 ("%f/%f")0008| 0xffffd058 --> 0xffffd274 --> 0x3f80..
[Samsung CTF 2017] ASM (Addition, Subtract, and Multiplication)
[Samsung CTF 2017] ASM (Addition, Subtract, and Multiplication)
2017.07.10ASM : Addition, Subtract, and Multiplication웹페이지 접속start이미지 가져오기정답 추론정답 입력팝업 안뜨면 정답인것.정답이면 학습 데이터에 (라벨, 데이터) 쌍 추가하고다음 문제 이미지 가져오기...반복오답이면 모은 학습 데이터를 바탕으로 학습...반복 데이터셋을 어떻게 정의할지가 문제인데.1. 그냥 이미지 전체를 학습시키기.피연산자들이 한 자리 숫자이면 classification 해야 하는 경우의 수가 그렇게 많지는 않으니까 이렇게 해도 되겠지만두세 자리 숫자도 나온다. 그렇게 되면 분류해야 하는 경우의 수가피연산자에 들어갈 수 있는 경우의 수가 각각 999, 연산자 +-/ 경우의 수 3 이니까999 * 4 * 999가 나오는데, 데이터 셋도 많이 필요하고 이렇게 ..
[0ctf] BABYHEAP - fastbin attack, chunk overlap
[0ctf] BABYHEAP - fastbin attack, chunk overlap
2017.07.02https://github.com/umbum/Python/blob/master/exploit/0ctf_babyheap.py 2. Fill에서 Size를 지정할 때, chunk의 size보다 크게 지정할 수 있기 때문에 다음 chunk의 fd를 덮어 쓸 수 있고, 이를 이용해 원하는 곳에 chunk를 만들어 반환하도록 할 수 있다. ( fastbin attack )1. Allocate로 원하는 곳(execution point)에 chunk를 만든 다음, 2. Fill로 원하는 데이터를 쓴다. execution point로는 GOT는 못쓰고(FULL RELRO), hooking function pointer인 `` __malloc_hook``을 사용할 수 있다. execution point addr을 알아내..
[SecuInside 2017] BABYHEAP : realloc(ptr, 0) / UAF
[SecuInside 2017] BABYHEAP : realloc(ptr, 0) / UAF
2017.07.02clue``c read()``에서 변수 크기보다 큰 10byte를 받는다.``c -``가 들어가 음수가 될 수 있다.10byte를 받지만, 1byte만 비교한다. ==> 첫 번째 byte가 `` 0xff``를 초과하도록 만들 수 있다. ```babyheap: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped CANARY : ENABLEDFORTIFY : ENABLEDNX : ENABLEDPIE : ENABLEDRELRO : disabled``` ```0x555555757000: 0x0000000000000000 0x000000000..
[Trend Micro CTF 2017] IoT/OSINT, MISC
[Trend Micro CTF 2017] IoT/OSINT, MISC
2017.06.27이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
[Trend Micro CTF 2017] Reversing
[Trend Micro CTF 2017] Reversing
2017.06.27이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.