전체 글

    64bit Format String Bug

    지금까지 미뤄뒀던 fsb 쪽을 공부해보았다. 아직 많이 미흡하지만 이후에도 여러 문제를 풀면서 여러 정보를 추가할 예정이다. Format String Bug FSB(Format String Bug) : 포맷 스트링 버그는 취약점 공격에 사용될 수 있는 보안 취약점이며, 포맷팅을 수행하는 printf() 같은 특정한 C 함수들에서 사용자 입력을 포맷 스트링 파라미터 (%d, %n ...)로 사용하는 것으로부터 나온다. 피라미터 종류 위와 같은 피라미터를 입력하면 어떤 일이 일어나는지 예제를 통해 알아보려 한다. TEST CODE #include #include #include ​ int main(void) { char buf[300]; ​ setvbuf(stdin, 0, 2, 0); setvbuf(stdo..

    angstormCTF 2020

    토/일 요일에는 최대한 잡고 월요일에는 못 풀던 문제를 조금 건들면서 진행했다. 여러모로 많이 부족한것을 느꼈다. 점 점 증진해야겠다. SOLVED MISC ws1 hxd로 문제 파일 열면 ctf가 그대로 박혀있다. shifter nc에 접속하면 무작위 문자열과 n 값 하나를 주는데 n을 피보나치수열로 바꾸고 값만큼 문자열을 이동하면 된다. 재귀 함수로는 40부터 시간제한에 걸려서 40~49까지 구한 값을 직접 넣어주었다. from pwn import * context.log_level = 'debug' p=remote("misc.2020.chall.actf.co",20300) ​ def caesar(s,n): s=list(s) for i in range(len(s)): if s[i].isupper():..

    hacknote

    Writeup File information Code 함수명들은 따로 설정한 것입니다. Main void __cdecl __noreturn main() { int v0; // eax char buf; // [esp+8h] [ebp-10h] unsigned int v2; // [esp+Ch] [ebp-Ch] ​ v2 = __readgsdword(0x14u); setvbuf(stdout, 0, 2, 0); setvbuf(stdin, 0, 2, 0); while ( 1 ) { while ( 1 ) { menu(); read(0, &buf, 4u); v0 = atoi(&buf); if ( v0 != 2 ) break; Delete(); } if ( v0 > 2 ) { if ( v0 == 3 ) { Print()..

    훈폰정음

    Writeup File information Code Main int __cdecl main(int argc, const char **argv, const char **envp){ alarm(0x3Cu); setvbuf(stdout, 0LL, 2, 0LL); setvbuf(stdin, 0LL, 2, 0LL); setvbuf(stderr, 0LL, 2, 0LL); puts(asc_11C0); while ( 1 ) { menu(); switch ( off_1214 ) { case 1u: add(); break; case 2u: edit(); break; case 3u: delete(); break; case 4u: check(); break; case 5u: exit(0); return; default: p..

    풍수지리설

    Writeup File information Code Main int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { char v3; // [esp+3h] [ebp-15h] int v4; // [esp+4h] [ebp-14h] size_t v5; // [esp+8h] [ebp-10h] unsigned int v6; // [esp+Ch] [ebp-Ch] ​ v6 = __readgsdword(0x14u); setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); alarm(0x3Cu); while ( 1 ) { puts("0: Add a Location"); puts("1: Delete a ..

    Tip

    윈도우 퍼징 관련 프로젝트를 진행하면서 사용한 팁 아닌 팁들을 적어두었다. Immunity debugger 중요한 mona.py 를 사용하기 위해 Immunity debugger 폴더 C:\Program Files (x86)\Immunity Inc\Immunity Debugger (경로는 환경마다 차이가 날 수 있다.) 안 PyCommands 폴더 안에 mona.py를 저장한다. 파일 여는법 + 인자 주는 법 opne으로 실행파일 열으면서 가장 밑 Arguments에 인자로 줄 파일 경로를 적어서 실행을 할 수 있다. 보호 기법 확인 !mona modules로 이미지 베이스 확인 및 보호 기법 확인 가능 Gadget !mona findwild -s "pop r32#ret" -m kernel32.dll p..

    JP2 File format

    프로젝트를 진행하면서 알아본 JP2 파일 포맷에 관한 내용들을 정리한 글이다. 전체적으로 필요한 부분만 사용하기 위해 알게 된 정보들이라 부족한 부분들이 있다. 그렇지만 자료가 많이 없어서 jp2 format을 찾는 사람들에게 조금이나마 도움이 될 수 있도록 글을 썼다. JPEG2000 파일 포맷으로는 J2K파일과 JP2파일이 있다. J2K 파일은 이미지 래스터 정보와 기본적인 헤더 정보인 JPEG2000 CodeStream만을 포함하고 있어 이미지를 디스플레이하기 위한 정보만을 갖고 있다. 이에 반해 JP2파일은 J2K 파일에 있는 JPEG2000 CodeStream과 함께 여러 가지 부가적인 메타 데이터를 포함하고 있다. JP2 jp2 file format은 다음과 같다. 위 그림과 같이 JP2파일은..

    HackCTF UAF

    가장 처음 uaf를 풀었을 때와 다른 방법으로 풀어버렸다. 처음 heap에 접했을 때는 break point를 걸은 후 chunk 할당을 보면서 풀었지만 이번에는 이런 식으로 할당되겠다고 생각하면서 풀어보았다. Writeup File information Code Main int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { int v3; // eax char buf; // [esp+8h] [ebp-10h] unsigned int v5; // [esp+Ch] [ebp-Ch] ​ v5 = __readgsdword(0x14u); setvbuf(stdout, 0, 2, 0); setvbuf(stdin, 0, 2, 0); wh..

    HackCTF Beginner_Heap

    heap공부를 다시 시작할 겸 풀었던 문제들 write-up을 써보려 한다. 그중 가장 먼저 풀었던 hackctf beginner_heap writeup이다! Writeup File information Code Main void __fastcall __noreturn main(__int64 a1, char **a2, char **a3) { void *v3; // ST10_8 void *v4; // ST18_8 char s; // [rsp+20h] [rbp-1010h] unsigned __int64 v6; // [rsp+1028h] [rbp-8h] ​ v6 = __readfsqword(0x28u); v3 = malloc(16uLL); *v3 = 1; *(v3 + 1) = malloc(8uLL); v4 =..

    ctf-d 플래그를 얻어라!

    포렌식 멘토링을 진행하면서 풀어본 문제이다. Writeup File inforamtion 이 문제는 Stegsolve를 이용하여 간단하게 풀 수 있다. Stegsolve로 파일을 연 후 하나 하나 넘기다보면 다음과 같이 flag를 얻을 수 있다.