본문 바로가기

분류 전체보기

(18)
[드림핵] shell_basic 문제 풀이 1. 문제 https://dreamhack.io/wargame/challenges/410 shell_basic Description 입력한 셸코드를 실행하는 프로그램이 서비스로 등록되어 작동하고 있습니다. main 함수가 아닌 다른 함수들은 execve, execveat 시스템 콜을 사용하지 못하도록 하며, 풀이와 관련이 없는 dreamhack.io 2. 풀이 1) execve, execveat 시스템 콜을 사용하지 못하도록 해야한다 -> orw 코드를 작성하여 문제 풀이 !! 2) /home/shell_basic/flag_name_is_loooooong를 16진수로 바꾸는 과정 필요 -> 2f 68 6f 6d 65 2f 73 68 65 6c 6c 5f 62 61 73 69 63 2f 66 6c 61 6..
gdb 이용 및 어셈블리어 분석 1. vi 에디터를 이용하여 helloworld.c 생성 2. 디스어셈블리를 통해 어셈블리어 변환 0x555555555151learax, [rip + 0xeac] 0x555555555158movrdi, rax 0x55555555515bmoveax, 0 0x555555555160callprintf@plt 0x555555555165moveax, 0 0x55555555516apoprbp 0x55555555516bret 0x55555555516cendbr64 0x555555555170subrsp, 8 0x555555555174addrsp, 8 0x555555555178ret
코틀린(Kotlin) 기초 01 Kotlin 개요 : JVM 기반 언어 -> JAVA와 호환 ▷ 특징 - Null Safety 지원 - JAVA와 호환 - 비동기 프로그래밍 용이 ㅁ 변수의 사용 ▷ 변수의 선언 val(또는 var) 변수명 [:자료형] = 값 ⊙ val : 변수 선언 시 초기화 값으로 값고정 ⊙ var : 변수 선언 후 필요에 따라 값변경 ⊙ 자료형을 생략했을 경우 초기화 값의 자료형으로 결정 / val myValue = 10 -> Integer 형 전역변수는 반드시 초기화 수행 ▷ 초기화 지연 ⊙ lateinit var 변수 : 자료형 - var로 선언한 변수의 초기화 지연, 기본 자료형에는 적용불가 ⊙ val 변수 [:자료형] by lazy { } - val 변수가 최초로 사용되는 순간 by lazy 블록이 실행되며..
[JAVA] 클래스와 객체 02 ● 클래스와 객체의 생성자 ● 상속의 정의와 사용법 ● 오버로딩, 오버라이딩의 차이 1. 클래스와 객체의 생성자 ㅁ 접근 제어자 : 외부에서 접근할 수 있는 정도와 범위를 정함 - 클래스나 멤버의 사용을 제어하기 위해 사용 · public : 접근 제한이 없음 · protected : 같은 패키지나 자식 클래스에서 접근 가능 · default : 같은 패키지 내에서만 접근 가능 · private : 같은 클래스 내에서만 접근 가능 ㅁ 접근자와 설정자 · 캡슐화(정보 은닉) : 구현의 세부 사항을 클래스 안에 감추는 것 · 클래스 안의 데이터를 외부에서 마음대로 변경하지 못하게 하는 것 · 외부에서 변수는 감추고, 메소드는 사용할 수 있도록 클래스를 생송 · getter : 변수값(필드 값)을 반환하는 접..
[JAVA] 클래스와 객체 01 ● 객체지향 프로그래밍의 특징 ● 클래스, 객체, 인스턴스의 의미 ● 클래스를 생성하고 사용하는 방법 ● 인스턴스 변수와 인스턴스 메소드에 대해 학습 1. 객체지향 프로그래밍 => 모든 데이터를 object로 취급하여 프로그래밍 하는 방법 ㅁ 객체지향 프로그래밍의 특징 - 자료 추상화 - 상속 - 캡슐화 - 다형 2. 클래스, 객체, 인스턴스 ⊙ 객체 (≒ 인스턴스) : 서로 다른 많은 데이터를 하나로 묶어서 표현한 것 ⊙ 클래스 : 객체를 만드는 도구, 객체를 정의해 놓은 것 ㅁ 클래스를 사용하는 이유 -> 코드의 재사용성 , 코드의 중복을 제거하여 오동작 방지 ㅁ 클래스의 정의와 객체 생성 - 클래스 정의 : 클래스를 작성하는 것 - class 키워드로 클래스를 정의 - 객체 생성 : 클래스명 객체 ..
DTD를 이용한 문서 구조 설계 1. DTD 개요 ㅁ DTD (Document Type Definition) - 새로운 마크업 언어를 정의 -> 문서/데이터의 구조를 정의 - XML 문서에서 사용가능한 markup들의 집합과 사용 규칙을 정의 ● 엘리먼트( + 속성 ) , 개체(entity), 노테이션(notation) 등 ㅁ 문서의 유효성 - 특정 DTD에 따라 작성된 문서를 그 DTD에 대해 유효한 문서라 함 - DTD를 이용해 XML 문서가 유효한 문서인지 확인 가능 (유효성검사) 2. DTD 사용 방법 ㅁ 문서 유형 선언(Document type declaration : DOCTYPE) - xml 문서가 어떤 DTD에 의해 (정의된 언어로) 작성된 것인지 문서 내에 명시 - DTD는 내부 DTD subset ( : 서두 안에 선..
XML 기본 문법 1. XML 문서의 분류 ㅁ 정형화된 XML 문서 : XML 문서 생성 규칙을 잘 지켜서 작성된 문서 - 하나의 루트 엘리먼트 존재 - 각 엘리먼트는 시작 태그와 종료 태그를 가짐 ㅇ ... ㅇ ... -> 로 표기 가능 - 엘리먼트들은 올바르게 중첩되어야 함 (nested property) ㅁ 유효한 문서 : 정형화된 문서이면서, XML로 정의된 특정 마크업 언어로 작성된 문서 (DTD나 XML Schema를 통해 정의된 마크업 언어의 문법 따르는 문서) 2. XML 문서 구조 ㅁ XML Document Production Rules [1] document ::= prolog element Misc* [22] prolog ::= XMLDecl? Misc* (doctypedecl Misc*) [23] X..
Python 기초 문법 (2) Unit 8 불(boolean)과 비교, 논리 연산자 1) 불(boolean) & 비교 연산자 불은 True, False로 표현하며 1(정수), 3.6(실수), 'Python'(문자열)처럼 값의 일종 파이썬에서는 비교 연산자와 논리 연산자의 판단 결과로 True, False를 사용함. 즉, 비교 결과가 맞으면 True, 아니면 False >>> 3 > 1 True 두 숫자가 같은지 비교할 때는 ==(equal), 다른지 비교할 때는 !=(not equal)을 사용 >>> 10 == 10 # 10과 10이 같은지 비교 True >>> 10 != 5 # 10과 5가 다른지 비교 True 숫자뿐만 아니라 문자열도 ==와 != 연산자로 비교 가능함. 이때 문자열은 비교할 때 대소문자를 구분. 다음과 같이 단어가..