일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 개인정보보호교육
- 국가인적자원개발컨소시엄
- package.json
- 동적타이핑
- 한국정보보호산업협회
- 호이스팅
- 곱셈 암호
- 모듈러 연산
- 백엔드
- Writeup
- 무료교육
- 개인정보보호
- function scope
- 한국산업인력공단
- 웹 프레임워크
- 개인정보보호위원회
- 유클리드_알고리즘
- 개인정보안전성
- pwnable.tw
- 디오판투스 알고리즘
- arrow function
- 덧셈 암호
- 마감임박
- 확장 유클리드 알고리즘
- package-lock.json
- 한국정보보호산업협회기자단
- 가명정보처리
- 포너블
- 백엔드입문
- node.js
- Today
- Total
짱짱해커가 되고 싶은 나

코드를 보면 a b c를 할당하고 a free -> b free -> a free 순으로 한다. 그러면 free list에는 a->b->a가 저장되어 있다. d에다가 다시 malloc을 한다. 8byte이기 때문에 fastbin에 있던 a가(예전 a의 주소) 할당된다. 그리고 2번째에 malloc을 다시 하면 b의 주소가 할당된다. 그러면 free list에 남은 주소는 예전 a의 주소만 남아있다. 그런데 다시 a를 할당한다면 d의 주소를 가리키게 되는데 d는 stack이기 때문에 stack영역을 chunk처럼 사용할 수 있게 된다. chunk는 (user data는 최소 16byte + 이전 꺼랑 크기 정보를 포함하고 있어서) + 0x10을 하기 때문에 0x20짜리의 크기를 stack으로 생각한다. a..

fastbin_dup.c를 실행시켜보니 다음과 같이 나왔다. 이 코드는 a, b, c를 할당시킨 다음 a를 free하는데 이렇게 되면 a는 fastbin에 들어가게 된다. 그 다음 바로 a를 할 경우 fastbin의 top인 a와 서로 같아 error가 발생하므로 a가 아닌 b를 free하게 된다. 그러면 sing linked list형태인 fastbin은 b -> a로 바뀌게 된다. 이 다음에 한 번 더 a를 free하게 된다면 fastbin에는 a->b->a로 a가 두 번 들어가게 된다. 3번 free 한 다음에 break point를 걸어줬다. main_arena를 확인해보니 a인 0x602000이 있었다. (그 저 코드를 돌렸을 때는 a : 0x602010 b : 0x602030 c : 0x602..

먼저 실행시켜보니 다음과 같은 메뉴형 문제다. 코드를 보려했더니 뭔가 걸려있는 것 같았다. 다 깨져서~ 나원참~ 아닌강 ㅎ;; checksec으로 확인해보니 Canary랑 NX가 걸려있다. Canary? 이전 ebp 전에 canary라는 랜덤 값을 함수 시작 전에 저장하고, 함수가 끝나기 전에 이 값이 변조됐는지 여부를 체크하는 메모리 보호 기법이다. NX? ROP 코드가 안보이니까 IDA를 통해 확인해보자! v7은 FS로부터 0x28만큼 떨어진 곳에 저장된 값이다. setvbuf // bss_start를 파일 스트림으로 하여 라인 마다 쓰여진다. setvbuf // stdin으로 라인 마다 쓰여진다. v3은 v5의 주소 값이고, v4에는 "%d"가 들어가 있다. v5에 값을 입력받는다. (v5가 num..

PE 파일 : Portable Executable File. 실행 가능한 파일 - 실행 파일 계열 : exe, scr - 라이브러리 계열 : dill (exe 파일을 도와주는 파일, 독립적 실행 불가능) - 드라이버 계열 : sys - 오브젝트 파일 계열 : obj IDE로 정적분석) a2가 273이고 a3이 1001일 경우 sub_401080 함수를 실행한다. v3가 97('a')이고, v4와 a5y('5y')가 같고, v5가 aR3reversing(R3versing)이고 String이 69('E')면 Text를 출력한다. 순서를 보면 String - v3 - v4 - v5 순 이다. 즉, Ea5yR3versing이면 되는 것이다.

ssh : secure shell protocol. 컴퓨터와 컴퓨터가 public network를 통해 서로 통신을 할 때 보안적으로(공개키 시스템) 안전하게 통신을 하기 위해 사용하는 프로토콜. ex) 데이터 전송, 원격 제어에 사용 fd파일에 s permission이 있는 것을 통해 fd가 setuid, setgid의 권한으로 실행됨을 확인할 수 있다. fd를 실행하면 pass argv[1] a number가 출력되고 종료된다. fd.c를 보면 argc가 2이상이어야 하는 것을 확인할 수 있다. argc는 메인함수에 전달되는 인자의 수 이고 argv는 메인함수에 전달되는 값이다. argv[0]은 항상 실행경로가 들어가기 때문에 argc는 기본적으로 1이다. read(fd, buf, 32)는 fd라는 ..
4.6 Object Construction Overloading : many methods have the same name but different parameters. (return type은 상관 없음) the signature of the method : parameter type을 포함한 함수의 이름. Overloading solution : argument type을 보고 적절한 version 선택. data field를 explict하게 초기화 하는 방법 1. declaration을 통해 value 할당 2. initialization box를 통해 value setting - class declaration에는 arbirary code block이 있는데 이들은 class가 construc..

4.1 Introduction to OOP Structured(procedural) programming (set of collaborating procedures) : Program = Algorithms + Data structures 1. algorithm 설계 2. 데이터 저장 방법 찾기 ∴ 데이터를 조작하는 procedures를 먼저 결정하고 데이터 조작을 쉽게 할 수 있는 구조를 결정. -> procedures는 structured programming에서 shared data위에서 동작한다. OOP(object-oriented programming) (set of collaborating objects) -> 데이터를 먼저 집어 넣고 이에 맞는 알고리즘을 찾는다. - 종종 understand..
3.6 String & substring character encoding system에서 code point/code position은 code space를 구성하는 숫자 값이다. Unicode encoding은 1, 114, 112 cod points를 갖고 있다. 0x0~ 0x10FFFF Unicode code space는 17개의 code planes로 나뉘고, 각 플랜은 65,536개의 code points를 지닌다. -> Unicode의 total size = 17 * 65,536 = 1,114,112이다. +) 특정 code space는 다른 인코딩 체계로 인코딩 가능. ex) UTF-8, UTF-16, UTF-32 a) U+0000 ~ U+007F (128) - UTF-8(8bit), UT..