Security/Layer7 17

컴퓨터의 부팅 과정과 Memory

I. 컴퓨터의 부팅 과정 0. What's Booting? 컴퓨터를 키면 부팅이 되기 때문에, 컴퓨터를 켜는 것과 부팅을 같은 의미로 많이 쓰곤 한다. Booting은(Bootstrapping의 준말) 메모리에 운영체제(OS)를 끌어다놓는 모든 과정으로 시스템을 사용 가능하게 만드는 과정이다. 운영체제 Operating System : 컴퓨터 시스템의 HW, SW를 운영, 관리하며 사용자와 컴퓨터 사이의 중개자 역할을 한다. 대표적으로 Windows, Linux 등이 있다. 1. 컴퓨터가 부팅되는 과정 ① Power Supply가 전압을 받아 컴퓨터를 쓸 수 있게 가공한다. ② 전기가 메인보드로 가고, 이 전기는 메인보드에 부착되어있는 모든 부품들에게 공급된다. ③ CPU가 BIOS를 실행한다. ④ BI..

Security/Layer7 2021.04.11

[HackCTF] Basic BOF #1 #2

Basic_BOF #1 :3 :4 s는 ebp-34h에 v5는 ebp-Ch에 있다. s는 40자를 담을 수 있는 크기를 갖고 있다. (34-C=28) 28(16) = 40(10) :7 fgets를 통해서 사용자로부터 45자를 입력받는다. :12 v5가 -559038737이면 쉘을 딸 수 있다. 559038737는 0xdeadbeef이다. s의 크기가 40byte인데 45byte까지 입력받을 수 있기 때문에 문자 40개로 s를 덮어버리고 0xdeadbeef를 보내면 될 것 같다. 다음은 작성한 exploit코드와 실행 결과이다. Basic_BOF #2 :3 s의 크기를 바로 구해보면 128byte이다. 8C-C = 80 80(16) = 128(10) :7 fgets로 133자를 입력받을 수 있다. 4번 문..

Security/Layer7 2021.01.30

HackCTF Sysrop

이미 많이 나와있는 여러가지 write up을 보면서 따라하며 익혔다. 1. 실행 sysrop 파일을 실행하면 입력을 받고 끝난다. NX bit가 걸려있다. NX bit가 걸려있기 때문에 쉘코드는 사용할 수 없다. NX bit같은 보안 방어가 있는 상태에서는 ROP(코드를 실행할 수 있게 해주는 기술)를 시도할 수 있겠다. 소스코드를 읽어보면 rbp-0x10에 0x78(120)크기 만큼의 데이터를 입력받을 수 있다. 여기에서 overflow가 일어난다. 2. exploit read 말고는 다른 함수가 없다. libc 주소를 leak을 하기 위해 사용해야하는 함수가 딱히 없다. 이때 시도할 수 있는 방법이 syscall을 이용한 ROP이다. (read 함수 안에서 호출되는 syscall을 이용하는 ROP)..

Security/Layer7 2020.11.27

객체지향 프로그래밍 (Object-Oriented Programming)

1. 객체란? 1) 객체 객체는 어떠한 행동을 포함하는 데이터이다. 자신의 속성을 갖고 있고 다른 것과 식별이 가능한 것을 말한다. - 데이터 : 이름과 값을 가지는 속성이다. - 동작 : 일련의 동작을 정의한 함수이다. 자바에서 이런 속성과 동작을 각각 필드와 메소드라고 부른다. 2) 객체의 예시 개가 있다. 하지만 개의 속성은 모두 다르다. Property dog.name = "meongmeong" dog.sound = "bowwow" dog.age = 5 dog.color = "brown" 2. 객체지향 프로그래밍 언어의 특징 1) 캡슐화 Encapsulation : 데이터와 데이터를 처리하는 함수를 하나로 묶은 것을 의미한다. (1) 캡슐화된 내용이 외부에 정보 은닉이 되어 변경이 발생할 때 오류..

Security/Layer7 2020.09.09

운영체제의 메모리 할당 알고리즘

여러 개의 남는 공간 중 가장 좋은 자리를 고르는 것을 Fit이라고 한다. 프로세스가 생성되고 종료되는 과정에서 Scattered Holes가 만들어지는데, 여러 개의 holes 중 프로세스를 적재할 메모리를 찾아 할당한다. 다음은 메모리를 할당하는데 사용되는 대표적인 알고리즘 세 가지이다. First-fit, Best-fit, Worst-fit Example 이 메모리에다가 저 노란색 크기 만큼의 데이터를 저장하려고 한다. 메모리 할당 알고리즘마다 어떻게 데이터를 저장하는지 보자. First-fit (최초적합) First-fit은 가장 최초로 발견되는 곳에 데이터를 저장한다. 메모리를 순차적으로 탐색하다가 가장 먼저 발견한 곳에 데이터를 저장하는 방법이다. Example의 데이터를 다음과 같이 저장할 ..

Security/Layer7 2020.09.02

Codegate 2018 BaskinRobbins31

많은 글을 참고했다. 어쩌면 이보다 더 많은 글을 봤을 수도. https://blackperl-security.gitlab.io/blog/2018/02/15/2018-02-15-codegate2018-baskinrobbins31/ https://j0n9hyun.xyz/writeups/pwn/baskinrobbins31/ https://rookie0705.tistory.com/5 https://advancedpersistentjest.com/2018/02/04/writeup-baskinrobins31-codegate/ 0. 시작 전 더보기 IDA를 설치하는 것부터가 난관이었다. 세 번은 깔았다 지웠다 한 것 같다. IDA를 처음 설치하고 처음 써보는 거라서 너무 어려웠다. 구글링 하면서 최대한 따라해봤다...

Security/Layer7 2020.09.02