[HackCTF] :pwn: 내 버퍼가 흘러넘친다!!! 포스팅 썸네일 이미지

War Games/HackCTF

[HackCTF] :pwn: 내 버퍼가 흘러넘친다!!!

코드 봅시다 우선 s는 0x14밖에 안되는데 무제한으로 받아서 BOF가 발생하네요. 쓸만한 함수를 줬는지 볼까요? 저런... 가젯을 줄만큼 친절하진 않은 문제네요. 쉘코드를 사용할 수 있는지 확인해봅시다 NX가 꺼져있는걸로 봐서 그냥 name에 넣어도 될 것 같습니다. 그럼 name의 주소 또한 알고있어야겠죠? name의 주소는 전역변수이기 때문에 다음과 같이 ida에서도 확인할 수 있고, disas main해서 어셈코드에서도 충분히 확인할 수 있습니다. 굳굳

2021.03.06 게시됨

[FORENSIC] ZIP 파일헤더 및 분석방법 포스팅 썸네일 이미지

FORENSIC

[FORENSIC] ZIP 파일헤더 및 분석방법

ZIP FILE HEADER 워게임 문제를 풀다가 만나게 되었는데 생각보다 정리할 부분이 많은 것 같아서 글로 작성합니다. 0. ZIP파일이란? 너무 일상생활에서 많이 쓰여서 다들 알고있는 내용이지만, 위키에서 제공해주는 정의를 봅시다. ZIP 파일 형식이란 데이터를 압축, 보관하기 위한 파일형식이다. ZIP 파일은 하나 혹은 여러 개의 파일들을 그 크기를 줄여 압축하고 하나로 묶어 저장한다. ZIP 파일 형식에서는 다양한 종류의 압축 알고리즘의 사용이 가능하나, 2009년 현재 Deflate 알고리즘만이 가장 많이 사용되고 지원되는 압축 알고리즘이다. -WIiki- 1. ZIP파일의 일반적인 구조 결국 ZIP의 구조를 봐야하는 경우가 생기겠죠? 다음은 ZIP파일의 내용을 도식화한 내용입니다. ZIP파일..

2021.03.06 게시됨

[HackCTF] :pwn: Basic_FSB 포스팅 썸네일 이미지

War Games/HackCTF

[HackCTF] :pwn: Basic_FSB

문제 봅시다 vuln함수를 보면 되겠네요 snprintf로 입력받아서 전형적인 fsb가 발생하네요. flag함수도 주어져 있으니 이 함수를 통해서 함수의 got를 overwrite하면 될 것 같다. 직접 값을 넣어봤을 때, 더미의 값부터 2번째 포맷스트링부터 값이 읽어지는 것을 확인했다. 따라서, dummy대신에 printf의 got를 삽입하고, flag의 함수를 넣으면 될 것 같습니다. flag주소 : 0x080485b4, 10진수 134514100 그럼 익스 고고 134514100이 아닌 134514096인 이유는 printf의 got가 4바이트이기 때문입니다. 굳굳

2021.03.05 게시됨

[HackCTF] :pwn: Basic_BOF #1, #2 포스팅 썸네일 이미지

War Games/HackCTF

[HackCTF] :pwn: Basic_BOF #1, #2

Basic_BOF #1 s에 입력을 받는데 값은 v5를 확인하고 있네요. s는 위치가 ebp-0x34인 반면, v5는 ebp-0xC에 위치하고 있기 때문에 dummy를 0x28, 즉 10진수 40만큼 집어넣어주면 될 것 같습니다. 그리고 v5의 확인값이 이상해서 hex로 바꾸어봤더니 0xDEADBEEF네요. 잘 넣어주도록 하겠습니다. 간단하네요 Basic_BOF #2 아이다 코드를 보면 특유의 굉장히 복잡한 코드를 보여주고 있는데 보면 그냥 sup함수를 실행시키는거죠? sup함수는 확인해봤는데 그냥 s를 출력시키는 역할을 하고 있습니다. s는 미루어짐작하기에 저거구요. 그럼 취약점은 뻔하게도 bof입니다. s는 크기가 0x80인데 fgets를 통해서 0x85이나 입력을 받고 있으니까요. 원래같으면 ret..

2021.03.05 게시됨

[C/C++] sprintf, snprintf 포스팅 썸네일 이미지

Coding_Algorithm/C_C++

[C/C++] sprintf, snprintf

맨날 공부해놓고 맨날 까먹어서 답답해서 쓰는 글입니다 sprintf/snprintf의 원형 우선 sprintf, 그리고 snprintf의 원형을 봅시다. int sprintf (char *buffer, const char *format, ...) int snprintf (char *buffer, int buf_size, const char *format, ...) 필요헤더: stdio.h 파라미터: *buffer : 버퍼 변수 buf_size : 가져올 크기(snprintf만 해당) *format : 포멧 리턴값 : 문자열의 길이 대충 printf와 비슷한 느낌인데 뭐가 다르냐면 buffer 변수에 형식에 따라 만들어진 문자열이 저장된다는 점이 다릅니다. 비교를 하자면 printf는 화면에 출력하고, s..

2021.03.04 게시됨

프로그래밍 언어에서의 추상화(Abstraction in OOP) 포스팅 썸네일 이미지

Coding_Algorithm

프로그래밍 언어에서의 추상화(Abstraction in OOP)

Abstraction in OOP(Object Oriented Programming) 이 글은 아래의 글을 참고했습니다. : stackify.com/oop-concept-abstraction/ OOP Concept for Beginners: What is Abstraction? Abstraction is one of the key concepts of object-oriented programming (OOP) languages. Read examples to better handle complexity. stackify.com 객체지향 프로그래밍 언어에서 추상화는 매우 중요한 개념입니다. 저도 추상화가 뭔지 알고는 있지만, 남에게 설명해보라고 했을 때 자연스럽고, 남이 충분히 받아들일 수 있을 만큼 구..

2021.03.04 게시됨

[Stack] Stack Frame 공부하기 - 2 포스팅 썸네일 이미지

SYSTEM HACKING/PWNABLE&REVERSING

[Stack] Stack Frame 공부하기 - 2

Stack Frame -2- 오늘은 Stack Frame에 대해서 더 자세히 들여다보도록 합시다. 저번에는 전체적인 흐름에 대해서 파악해보았다면, 이번에는 하나의 함수에만 집중해서 정확히 어떤 일들이 일어나는지 확인해보도록 하겠습니다. (참고)앞으로의 내용은 기본적으로 메모리 주소(ex. C언어의 pointer 등등..)에 대한 기본적인 이해는 있다는 전제 하에 작성된 글입니다. 1. 더 자세히 들여다보기 이번에는 조금은 다른 코드를 통해서 분석해보도록 합시다. //gcc -m32 -g -o ex2 ex2.c #include int main() { int a = 5; char arr[64]; printf("main함수가 호출되었습니다\n"); return 0; } 위 코드는 저번 글에서 사용한 코드에서 ..

2021.03.02 게시됨

[Stack] Stack Frame 공부하기 - 1 포스팅 썸네일 이미지

SYSTEM HACKING/PWNABLE&REVERSING

[Stack] Stack Frame 공부하기 - 1

Stack Frame -1- 오늘은 Stack Frame에 대해서 배울 예정입니다. 앞으로 2~3개의 글을 통해서 기본적으로 Stack Frame이 무엇인지, 시스템 보안을 하는 사람의 입장에서는 어떤 것들을 알고 있어야 하는지, 그리고 나아가 Stack Frame을 분석할 수 있는 툴 중 하나인 gdb 사용방법을 작성할 예정입니다. 1. Stack Frame이란? 사실 Stack Frame이라는 말보다는 그냥 Stack, Stack 자료구조정도로 더 많이 쓰이는 것 같습니다. 기본적으로 프로그램이라고 함은 컴퓨터의 메모리를 사용해서 이런저런 연산/작동을 수행하는 것을 칭하죠. 그럼 이런 프로그램들이 수십개가 실행되고 있는 컴퓨터에서는 메모리를 효율적으로, 잘 쓰는게 중요하겠죠? 그래서 이 프로그램들이 ..

2021.03.01 게시됨

[HackCTF] MISC Write-Up (All-Clear) 포스팅 썸네일 이미지

War Games/HackCTF

[HackCTF] MISC Write-Up (All-Clear)

1. $1mp1e m4th pr0b1em 이건 그냥 접속할 수 있는지 물어보는 문제죠? 2. BF 이건 BrainFuck암호다... 예전에 푼적 있어서 쉽게 풀었다ㅎ 푸는방법은 구글링하면 쉽게 디코더가 나오니 참고할 것 3. Who am I? EIP라고해서 그냥 대충 비슷한 어셈들 다 넣어봤습니다. pop, jmp, ret... +) 맞은거 같은데 틀렸으면 대문자로도 해보세유 4. QRCODE 까보면 이런 사진이 있는데 qr인식이 안된다. 어디서 주워들었던게 저 네모들이 채워져있고, 그걸 기반으로 인식한다고 해서 저 네모들 까만색으로 색칠해서 인식시켰더니 됐다! 원래는 qrtools쓰라고 냈던거겠지...ㅋㅋㅋㅋ 5. 달라란 침공 열어보면 브루트포싱 문제로 보인다. 그래서 그냥 단순히 코드를 작성하였다. ..

2021.02.15 게시됨

[HackCTF] Crypto Write-Up 포스팅 썸네일 이미지

War Games/HackCTF

[HackCTF] Crypto Write-Up

1. Great Binary 2진수를 단순히 아스키로 바꿔주면 됩니다. 방법은 직접 python으로 코드짜도되고 온라인 툴 써도 되궁 2. Smooth CipherText Rijvsmysmysmy Itovwyrc! Ns wyy ixsu Glm kq G? wc lkqc sw qwsmdlkkr sr...M ixsu fipi acvp urer iss geld! Md iss mel niastfov rrmq mvwzxmqvyw, cme gyx kcd xfo gmbvcmx yxwuov. qy, jjkk gc LymoADJ{t_tzwi_3vxbd0p3_vff.afy'q_wzoxpq_dp_qfz} 대소문자가 유지되어있고, {}_같은 특수문자는 치환되지 않았으며 처음 플래그 머릿말이 HackCTF일텐데 A -> C, D..

2021.02.15 게시됨