Sunrin/Layer7

    컴퓨터의 부팅 과정과 Memory

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

    [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번 문..

    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)..

    HackCTF : Cryptography, Smooth CipherText, Classic Cipher

    보호되어 있는 글입니다.

    웹브라우저와 서버의 통신

    https://asfirstalways.tistory.com/318 https://kwongyo.tistory.com/22 0. 웹 (www) 웹은 인터넷을 활용하는 서비스 중의 하나로 인터넷에 연결된 컴퓨터를 통해서 정보를 공유할 수 있는 공간이다. 하이퍼 텍스트와 그림을 통하여 서비스를 이용할 수 있다. 1. 웹 서버와 웹 클라이언트 웹은 웹 서버와 웹 클라이언트로 구성되어있다. 1) 웹 서버 ( web server ) - 웹 사이트를 올린다. - 웹에 있는 문서, 파일, 이미지, 동영상 등의 데이터를 저장하고 관리한다. - 웹 클라이언트의 요청을 받고 웹 문서를 전송한다. 2) 웹 클라이언트 ( web client ) - 웹 클라이언트는 웹 브라우저(크롬, 웨일, 엣지 등)와 같은 웹에 접근할 수 ..

    컨테이너와 도커

    0. VM 0-1) Full Virtualization 주로 호스트 OS에 VMware나 Virtual Box 같은 가상머신을 이용해서 게스트 OS를 가상화했다. 기존 가상화 방식은 사용하기가 쉽고 여러가지 운영체제를 가상화할 수 있다는 장점이 있지만 프로그램이 무겁고 속도가 느리다는 단점이 있다. 0-2) Para Virtualization 위의 가상화 방식을 개선하기 위해서 반가상화 방식이 등장한다. 전 가상화는 하드웨어 전부를 가상화했다면, 반 가상화는 전부를 가상화하지는 않는다. 1. 컨테이너 컨테이너는 격리된 공간에서 프로세스가 동작하는 것을 의미한다. 위에서 언급한 가상화 기술과는 차이가 있다. 컨테이너는 애플리케이션의 실행헤 필요한 것들을 이미지(단위) 파일로 배포한다. 컨테이너는 네임 스페..

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

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