전체 글
HackCTF - 달라란 침공
달라란 침공은 Pwntool이 아직 익숙하지 않을 때 시도하면 좋은 문제이다. 만약 문제를 못 풀어 보신분은 삽질을 하더라도 혼자서 시도해보길 바란다. Writeup Information nc를 접속하면 다음과 같은 화면이 나온다. 이 중 하나를 선택하여 입력해주면 다음과 같이 간단한 연산 문제가 나오고 문제를 맞히면 다음 문제가 나온다. 이 문제는 Pwntlool을 이용하여 데이터를 뽑아낸 후에 연산 후 결과 값을 보내주면 되는 문제이다. Code 코드가 좀 개떡이라 죄송합니다.. 문제는 달라란 은행, 보라빛 요새, 달라란 거리 3개의 챕터? 가 있으며 각 챕터는 다음과 같다. 달라란 은행 '+', '-' 연산 20문제 보라빛 요새 '*', '/' 연산 30문제 달라란 거리 '+', '-', '*', ..
ATT&CK Attack Framework
Requirement 1. ATT&CK Att&ck Framework 개념, 용어, 활용방안 등 배경지식 설명 ATT&CK Framework? Miter Corp에서 개발 한 ATT&CK Framework는 기업 네트워크에 대한 수백만 건의 공격에서 관찰된 위협적인 전술 및 기술에 대한 동적 문서이다. ATT&CK Use Cases Adversary Emulation 특정 적에 대한 사이버 위협 인텔리전스를 적용하여 기술 도메인의 보안을 평가하는 과정과 그 위협을 모방하기 위해 그들이 어떻게 운용하는지를 평가한다. Adversary Emulation은 조직의 라이프사이클의 모든 해당 지점에서 적대적인 활동의 탐지 및/또는 완화를 검증하는 능력에 초점을 맞춘다. ATT&CK는 Adversary Emulat..
Adult_FSB (64bit fsb, exit)
exit함수 내부적으로 free 호출하는 것에 대한 글을 쉽게 찾아서 쉽게? 풀었던 것 같다. Writeup File information Code Main int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { signed int i; // [rsp+Ch] [rbp-144h] char buf; // [rsp+10h] [rbp-140h] unsigned __int64 v5; // [rsp+148h] [rbp-8h] v5 = __readfsqword(0x28u); Init(*(_QWORD *)&argc, argv, envp); for ( i = 0; i > 16) & 0xffff one_gadget_high = (one..
exit함수를 이용한 exploit
hackctf adult_fsb 문제를 풀면서 알게 된 방법이다. exit함수 내부의 free함수를 호출하는것을 이용하여(free_hook) exploit을 하는 방법을 소개하려고 한다. Source Code 먼저 간단하게 exit함수에서 어떻게 free함수가 호출되고 있는지 알아보자. exit() void exit (int status) { __run_exit_handlers (status, &__exit_funcs, true, true); } exit함수는 내부적으로 run_exit_handlers 함수를 호출하여 진행한다. 여기서 인자로 넘겨주는 &__eixt_funcs는 exit.h에 선언되어있다. exit.h extern struct exit_function_list *__exit_funcs a..
ChildFSB (64bit fsb)
원래 풀려던 방법으로는 실패해서 살짝 다르게 풀어보았는데 생각대로 한 번에 풀려서 다행이었다. Writeup File information Code Main int __cdecl main(int argc, const char **argv, const char **envp) { char buf; // [rsp+0h] [rbp-20h] unsigned __int64 v5; // [rsp+18h] [rbp-8h] v5 = __readfsqword(0x28u); Init(); puts("hello"); read(0, &buf, 25uLL); printf(&buf, &buf); return 0; } Main함수의 역할은 다음과 같다. read함수로 buf에 최대 25만큼 입력한다. printf함수로 buf를 ..
babyfsb (64bit fsb)
Writeup File information Code Main int __cdecl main(int argc, const char **argv, const char **envp) { char buf; // [rsp+0h] [rbp-40h] unsigned __int64 v5; // [rsp+38h] [rbp-8h] v5 = __readfsqword(0x28u); setvbuf(_bss_start, 0LL, 2, 0LL); puts("hello"); read(0, &buf, 0x40uLL); printf(&buf, &buf); return 0; } Main함수의 역할은 다음과 같다. read함수로 buf에 최대 64만큼 입력한다. printf함수로 buf를 출력한다 (fsb 발생) Exploit 이 문..
angstormCTF library_in_c (64bit fsb)
64bit fsb를 공부한 후 다시 풀어보았다. 다시 보니까 작은 부분에서 실수해버려서 flag를 못 얻고 있었다... 공부해보니 엄청 쉬운 문제... Writeup File information Code Main int __cdecl main(int argc, const char **argv, const char **envp) { __gid_t rgid; // ST0C_4 char s; // [rsp+10h] [rbp-90h] char format; // [rsp+50h] [rbp-50h] unsigned __int64 v7; // [rsp+98h] [rbp-8h] v7 = __readfsqword(0x28u); setvbuf(_bss_start, 0LL, 2, 0LL); rgid = getegid..
you_are_silver (64bit fsb)
64bit 환경에서의 fsb를 이용하는 문제이다. Writeup File information Code Main int __cdecl main(int argc, const char **argv, const char **envp) { char s; // [rsp+0h] [rbp-30h] int v5; // [rsp+28h] [rbp-8h] unsigned int v6; // [rsp+2Ch] [rbp-4h] setvbuf(stdout, 0LL, 2, 0LL); v6 = 50; puts("Please enter your name"); fgets(&s, 46, stdin); printf(&s, 46LL); v5 = get_tier(v6); printf((const char *)v5); return 0; }..