목록CTF (53)
Sechack
대회때 하나만 해결하면 바로 rop할 수 있었는데 그걸 해결 못해서 못풀었다. 너무 미련이 남아서 대회 끝나고 막혔던 부분만 다른분 아이디어 참고해서 다시 풀어봤다. 그렇게 어려운 문제도 아니었고 막혔던 부분만 해결했으면 바로 풀 수 있었는데 너무 아쉽고 미련이 많이 남는다. 그래도 턱걸이로 본선 갔으니까... 다행이긴 하다. 대회 당시 https://irrlicht.sourceforge.io/forum/viewtopic.php?f=7&t=52785&sid=82d189da1e8d466aea667d5958334975 [fixed]Stack buffer overflow in MD2 Parser - Irrlicht Engine You discovered a bug in the engine, and you ar..
이번에도 포너블 올클 했다. 레이팅 23.36인데 포너블은 그렇게 어렵진 않았다. 13등 GG 올클 GG 같이 참여했던 분들 수고하셨습니다. access 이건 자고 일어나니까 같은 팀 형이 풀어놓은 문제다. https://www.facebook.com/profile.php?id=100009136532072 로그인 또는 가입하여 보기 Facebook에서 게시물, 사진 등을 확인하세요. www.facebook.com 본인이 페북 링크 올리라해서 올린다. pass.txt읽어서 스택에 저장한다. 아마 저게 플래그 같다. 그리고 fsb터지니까 그냥 스택에 있는 플래그 읽어오면 된다. flag : BtSCTF{@Fin3@cc3$$} shellcode int __cdecl main(int argc, const cha..
이번엔 데프콘에 참여해보았다. 100솔버가 넘는 쉬운 날먹 문제긴 했는데 다른 문제는 접근조차 제대로 되지 않았다. __int64 __fastcall main(int a1, char **a2, char **a3) { unsigned int v3; // er12 void *v4; // rax const void *v5; // r15 unsigned int v6; // er14 unsigned int v7; // esi unsigned int v8; // ebx __int64 v9; // rbp void *v11; // rax void (*v12)(void); // rax char v13; // [rsp+Bh] [rbp-3Dh] BYREF unsigned int v14[15]; // [rsp+Ch] [rbp..
포너블은 커널빼고 다 풀었다. 레이팅 24.19짜리 CTF인데도 이정도 푼거 보면 포너블은 이제 나도 CTF에서 어느정도 경쟁력을 갖춘것 같다. 리버싱이나 웹해킹, 크립토 등 다른 분야도 빨리 공부해놔야 나중에 수상 노리고 대회 뛸때 팀 대회가 아닌 개인전에서도 활약할 수 있을것 같다. Codechainz void __noreturn loop_de_loop() { char s[10]; // [rsp+Eh] [rbp-12h] BYREF int v1; // [rsp+18h] [rbp-8h] BYREF char v2; // [rsp+1Fh] [rbp-1h] v1 = -1; v2 = 0; while ( 1 ) { while ( 1 ) { menu(); fflush(stdout); input_int(&v1); i..
하나의 서비스를 exploit하는 일반적인 포너블과는 다르게 바이너리의 특정 부분이 계속해서 바뀌고 바뀐 부분을 자동으로 읽어내서 여러번 exploit하는 AEG문제이다. 디스어셈블 결과나 opcode에서 필요한 부분을 읽어와서 exploit에 적용해야 하므로 약간의 코딩 능력이 필요하다. 문제에서 주는 nc주소에 접속해보면 hexdump로 출력한듯한 내용을 준다. 그리고 60초 내에 입력을 줘야하고 프로그램의 exit code를 주어진대로 만들어야한다. 저걸 받아와서 IDA로 분석해보자. 프로그램 구조는 간단하다. 그냥 fsb터진다. exit_code를 원하는 값으로 덮으면 된다. 문제는 permute함수인데 안에 들어가보면 이런식으로 함수들을 순서대로 호출한다. permute라는 이름만 봐도 알 수 ..
말로만 듣던 코드게이트에 처음으로 참여해보았습니다. 포너블이 엄청 어려울줄 알고 예선 시작 1주일 전부터 Line CTF 2021, Hayyim CTF 2022에 출제되었던 포너블 문제들을 몇개 풀어봤는데 제 예상보다 훨씬 쉽게 나와서 빠른 시간안에 올클이 가능했습니다. 덕분에 대회 시작하고 얼마 안가서 2등까지 치고 올라갔었는데 저의 주요 분야인 Pwnable, Web을 올클하고나니까 풀게 없어졌습니다. Misc에 간단한 이진탐색 문제 있어서 그거까지 풀고 더이상은 못했습니다. 여러 분야를 두루두루 공부해놔야 할 필요성을 느꼈습니다. 리버싱도 하나 솔버 많던데 결국 풀진 못했습니다. 알고보니 루틴만 찾으면 z3날먹 문제였는데;;;;;; 본선때까지 리버싱 열심히 공부해서 Pwnable, Web, Revr..
#include #include #include #include "seccomp-bpf.h" void activate_seccomp() { struct sock_filter filter[] = { VALIDATE_ARCHITECTURE, EXAMINE_SYSCALL, ALLOW_SYSCALL(mprotect), ALLOW_SYSCALL(mmap), ALLOW_SYSCALL(munmap), ALLOW_SYSCALL(exit_group), ALLOW_SYSCALL(read), ALLOW_SYSCALL(write), ALLOW_SYSCALL(open), ALLOW_SYSCALL(close), ALLOW_SYSCALL(openat), ALLOW_SYSCALL(fstat), ALLOW_SYSCALL(brk), A..
mic check 디스코드 채널에 가면 플래그가 있습니다. Pocketmon 메뉴를 보면 평범한 힙 문제이다. 할당받을때 chunk를 2개 할당한다. 핵심 취약점은 free할때 터지는데 인덱스가 16일때는 NOOOOOOOOOOOOOOOOOOOOOO를 출력하고 끝낸다. 0으로 초기화해주지 않아서 16번 인덱스에서 uaf가 터진다. 우리는 free된 chunk에 맘대로 접근할 수 있으므로 fd를 맘대로 바꿀 수 있고 결과적으로 aaw를 할 수 있다. libc leak은 여기 남아있는 주소를 이용해서 0x7f를 size로 놓고 chunk할당하면 된다. 프로그램에서 0x30크기와 0x70크기의 chunk를 사용하고있는데 딱 맞다. 그리고 calloc이어도 0x7f가 size로 들어가게 되면 IS_MMAPPED비..
보호되어 있는 글입니다.
이번엔 민욱이형이랑 같이 TeamH4C CTF팀이 아닌 다른 CTF팀으로 참여했다. 평일에 하는거여서 시간이 약간 부족한감이 있었는데 포너블 올클도 하고 나름대로 만족스러웠다. 최종 결과는 19등이다. 버스탔다. ㅋㅋ Syno계정은 지용님이랑 민욱이형이 같이쓴 계정이다. 아무튼 쌉캐리.. 그럼 write up시작!! Name_Server 걍 bof터진다. rop하면된다. from pwn import * r = remote("3.97.113.25", 9001) e = ELF("./name-serv") pop_rdi = 0x4006d3 puts_plt = e.plt["puts"] puts_got = e.got["puts"] payload = b"a"*0x28 payload += p64(pop_rdi) pay..