c1 - exercise2 포스팅 썸네일 이미지

War Games/training_prob

c1 - exercise2

ㄱㄱ vuln함수로 들어가네요. s는 ebp-0x14에서 시작해서 크기가 0x14밖에 되지 않지만, 입력은 0x38이나 받고 있네요. main함수 외의 함수에서 sfp까지 조작할 수 있기 때문에 간단히 FPO를 사용하면 될 듯 합니다. 보니깐 NX도 안걸려있어서 쓸 수 있습니다. FPO를 모른다면 : dokhakdubini.tistory.com/228?category=809542 [Stack] Frame Pointer Overflow, FPO에 대하여 오늘은 FPO, Frame Pointer Overflow에 대해서 알아볼 것입니다. SFP Overflow라고도 불립니다. FPO에 대한 풀이 글들을 보면 계속 leave가 ebp+4에 접근할 수 있다, sfp를 조작했으니 ebp를 조작할 수 있다이런.. ..

2020.10.14 게시됨

[linux] 3. NX(with DEP)에 대하여 포스팅 썸네일 이미지

Coding_Algorithm/Operating System

[linux] 3. NX(with DEP)에 대하여

NX(with DEP) Non-Executable / Data Execution Protection Linux Memory Protection - 3 1. What is NX/DEP? NX와 DEP는 둘 다 같은 개념의 보호기법으로 각각 Non executable과 Data Execution Protection의 약자입니다. 각각의 의미를 읽어보면 한 마디로 '실행시키지 않는다'입니다. 좀 더 자세히 말하자면 'heap과 stack과 같이 buffer overflow 공격에 이용되는 메모리 공간에 있는 코드를 실행시키지 않는다'는 것이죠. 즉 쉽게 말해 쉘코드를 버퍼에 삽입해도 실행시키지 않는다는 뜻입니다. NX와 DEP의 차이점은 단순히 DEP는 같은 개념이지만 윈도우 플랫폼에서 사용되는 보안 기술이라..

2020.10.13 게시됨

[linux] 2. Canary에 대하여 포스팅 썸네일 이미지

Coding_Algorithm/Operating System

[linux] 2. Canary에 대하여

Canary Linux Memory Protection - 2 1. What is Canary? **Stack Smashing Detected** 빼앵앵애ㅐㅇ애에에ㅔㅔㄱ Canary기법이란 'buffer와 SFP(Stack Frame Pointer) 사이에 buffer overflow를 탐지하기 위한 임의의 데이터를 삽입하는 기법'입니다. 왜 이런 걸 넣냐구요? 기본적인 스택 구조와 카나리가 활성화된 스택 구조의 차이점을 봅시다. 왼쪽은 Canary가 꺼져있고, 오른쪽은 Canary가 활성화된 스택입니다. buffer와 SFP사이에 Canary라는 것이 생겼죠? 많은 공격기법은 eip 레지스터를 변경하는 것을 목표로 두고 있는데, 그 중 다수의 기법들이 RET를 변경합니다. 그러나 Canary로 Memo..

2020.10.13 게시됨

[linux] 1. ASLR(Adress Space Layout Randomization)에 대하여 포스팅 썸네일 이미지

Coding_Algorithm/Operating System

[linux] 1. ASLR(Adress Space Layout Randomization)에 대하여

ASLR Address Space Layout Randomization Linux Memory Protection - 1 1. What is ASLR? 자 오늘은 리눅스 메모리 보호기법 첫 번째 입니다. ASLR에 대해서 배워 볼 건데요, 일단 ASLR이란 Address Space Layout Randomization의 줄임말입니다. 직역하면 "주소 공간 배열 무작위화" 입니다. 말 그대로 주소를 매번 실행할 때마다 무작위화시켜 공격을 방해합니다. 이때 어떤 주소를 랜덤화시키는지가 중요합니다. ASLR은 데이터영역만 무작위화시킵니다. (참고)같은 방법으로 바이너리 영역을 무작위화시키는 보호기법은 PIE입니다. 참고로 데이터 영역은 대표적으로 스택, 힙, 라이브러리 영역을 포함하고, 다른 영역들도 있긴 한..

2020.10.11 게시됨

[linux] 0. 메모리 보호기법 - abstract 포스팅 썸네일 이미지

Coding_Algorithm/Operating System

[linux] 0. 메모리 보호기법 - abstract

이번주는 메모리 보호기법에 대해서 서술해보려고 합니다. 일단 메모리 보호기법 자체에 대한 정의를 알아봅시다. 메모리 보호는 컴퓨터 메모리의 사용을 제어하는 방법이며 모든 운영 체제에서 중요한 쟁점사항 중 하나이다. 운영 체제에서 실행하고 있는 프로세스가 자신에게 할당되지 않은 영역의 메모리에 접근하는 것을 막는 것이 메모리 보호의 주된 목적이다. 이를 통해 프로세스 내의 버그가 다른 프로세스의 동작에 영향을 미치는 것을 예방하며 악성 소프트웨어가 시스템에서 허가되지 않은 접근권한을 갖고 시스템에 영향을 끼치는 것을 막아준다. -Wikipedia 네. 뭐 위키는 저렇다는데 쉽게 얘기하면 메모리 사용을 제어하는 방법입니다. 시스템 해킹을 배워보신 분이라면 사용하길 원하는 함수/메모리의 주소, 입력해야 하는 ..

2020.10.11 게시됨

[pwnable.xyz] two targets(50 pts) :: Write-Up 포스팅 썸네일 이미지

War Games/pwnable.xyz

[pwnable.xyz] two targets(50 pts) :: Write-Up

Which one would you exploit? 문제 자체는 되게 직관적이네요. 1~3번으로 준비를 한 뒤에 4번으로 shell을 따면 되려나봐요 그쵸? 아이다로 더 자세히 봅시다. 문제분석 // local variable allocation has failed, the output may be wrong! int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { char *v3; // rsi const char *v4; // rdi signed int v5; // eax char s; // [rsp+10h] [rbp-40h] __int64 v7; // [rsp+30h] [rbp-20h] char *v8; // [rsp..

2020.10.10 게시됨

함수의 got 구하기 포스팅 썸네일 이미지

SYSTEM HACKING/PWNABLE&REVERSING

함수의 got 구하기

생각보다 물어보는사람이 많아서... 걍 정리글 씁니다 제가 아는 방법은 두가지 방법 정도가 있는 것 같아요. 저는 첫 번째 방법을 추천합니다. 1. gdb 사용 첫 번째 방법은 gdb를 이용합니다. gdb -q (파일명)으로 gdb를 실행하고, gdb로 p (함수명) 입력해 함수의 plt주소를 찾습니다. +) 이때 프로그램을 실행시켜 함수를 실행하면 다른값을 보여주니 gdb 실행하고 다른 명령 하지말고 바로 p (함수명) 해주시길 바랍니다. 그렇게 함수의 plt를 알아낸 다음, 그 주소의 plt가 jmp하는 곳이 got주소입니다. 다음 사진의 경우 printf의 got는 0x601238입니다. 왜 저런 과정을 통해서 구해지는지 모르겠다구요? 참고1을 읽어봅시다. 기본적인 plt와 got의 지식이 필요하네..

2020.10.09 게시됨

[pwnable.xyz] note(50 pts) :: Write-Up 포스팅 썸네일 이미지

War Games/pwnable.xyz

[pwnable.xyz] note(50 pts) :: Write-Up

이 글이 wargame 카테고리의 100번째 글이에요! 와아아아 더 열심히 하겠습니다ღ'ᴗ'ღ Note taking 101 일단 문제분석을 해봅시다. 메뉴는 1이면 edit_note()를, 2이면 edit_desc()를, 3이면 종료하네요. 각각 edit_note()와 edit_desc()를 좀 더 봅시다. 먼저 edit_note()입니다. note의 길이를 입력받고, buf에 해당 메모리 만큼 malloc으로 동적할당을 받은 뒤, 입력값을 전역변수 s에 복사합니다. strncpy()를 한 뒤에는 buf는 free()시키네요. 다음은 edit_desc()입니다. 만약 buf에 주소가 할당되어있지 않는 경우, 0x20만큼의 메모리를 동적할당 해주고, buf에 값을 read()를 통해 읽어오네요. 마지막으로..

2020.10.09 게시됨

[pwnable.kr] horcruxes(7 pts) :: Write-Up 포스팅 썸네일 이미지

War Games/pwnable.kr

[pwnable.kr] horcruxes(7 pts) :: Write-Up

Voldemort concealed his splitted soul inside 7 horcruxes. Find all horcruxes, and ROP it! author: jiwon choi ssh horcruxes@pwnable.kr -p2222(pw: guest) 와 toddler's bottle 마지막 문제네요. 대놓고 ROP라고 주어져있네요. 봅시다 일단 readme를 보니 9032로 들어가서 익스하라고하네요. 아무튼 그렇고, 아이다로 열어봅시다. main함수입니다. 음 저기있는 함수들을 확인해 보았을 때, init_ABCDEFG()는 랜덤값을 할당해주는 함수였고, seccomp_* 함수들이 있는데, 이는 찾아보니 프로그램을 보호하기 위해 샌드박스 안에서 실행이 될 수 있도록 하는 함수라고 하..

2020.10.09 게시됨