본문 바로가기

Programming Language7

[C++] 클래스와 객체 1. 클래스와 객체객체지향 프로그래밍에서는 클래스와 객체의 개념이 등장합니다.객체지향 특징 중 캡슐화를 구현하기 위해 나온 개념인데, 하나의 데이터형을 추상화하기 위해 사용됩니다.쉽게 말하면 이렇게 됩니다.클래스 : 붕어빵 틀객체 : 붕어빵클래스라는 붕어빵 틀을 이용해, 객체라는 붕어빵을 필요한 만큼 만들어내는 것입니다.클래스를 구성하려면, 이 데이터형이 어떤 동작을 하는지 구성하고, 이를 추상화 할 필요가 있습니다.자동차로 예를 들어 보겠습니다.Class Car {속성 :색상배기량속도…기능 :시동 걸기시동 끄기가속하기…}이런 식으로 클래스를 구성하게 됩니다. 이 Car 클래스를 이용해서 세단, SUV, 트럭… 등 실제 자동차(객체)를 만들게 됩니다.이를 C++ 문법으로 작성한 코드입니다.class Ca.. 2025. 4. 30.
[C++] C++의 기본 (2) 1. Inline FunctionC언어에서는 동작을 정의할 수 있는 방법으로 매크로와 함수가 존재합니다.#define ADD(x,y) ((x)+(y)) // x와 y를 더함 int main() { ADD(3, 5);}위 코드는 매크로로 ADD 연산을 정의했습니다.매크로는 전처리 단계에서 해당 내용을 통째로 치환한 뒤 컴파일이 진행됩니다.이로 인해 매크로 내용이 길면 파일 크기가 커질 수 있습니다.ex) 위 코드에서 ADD(3, 5)는 ((3) + (5))로 치환되어 컴파일반면 함수의 경우 다음과 같이 사용합니다.int add(int x, int y) { return x + y;} int main() { add(3, 5);}add() 함수를 정의한 모습입니다. 매크로와 달리, 함수의 경우 해당 함수의 주소.. 2025. 4. 30.
[C++] C++의 기본 (1) C언어와 C++언어의 큰 차이점이라고 한다면,C언어는 절차 지향 프로그래밍 언어이고 C++는 객체 지향 프로그래밍 언어입니다.객체 지향 프로그래밍 언어의 특징은 다음과 같습니다.캡슐화 (Encapsulation)상속성 (Inheritance)다형성 (Polymorphism)1번의 경우 class로 이를 구현하며, class의 기능을 물려받아 또 다른 class를 정의한다는 것이 2번의 개념입니다.function overloading이나 overriding에 관련된 것들은 3번이며, 이 역시 class와 관련된 것들이 있습니다.이번 글과 다음 글에서는 C++만이 가지고 있는 기본적인 사항들을 다룰 것입니다.1. 표준 입출력C++에서는 다음 함수를 통해 표준 입출력을 처리합니다.cin : 입력, cout :.. 2025. 4. 30.
[C++] C언어 살펴보기 이 글은 C++ 프로그램을 작성할 때 반드시 알아야 할 C언어 특징을 정리한 글입니다.1. 표준 입출력C언어에서의 입출력 함수는 다음과 같습니다.출력 : printf(), 입력 : scanf()#include int main() { int n1, n2; print("두 수 입력 : "); scanf("%d %d" , &n1, &n2); print("두 수의 합 : %d\n", n1 + n2); return 0;}2. 배열C언어에서 배열을 선언하는 방법입니다.#include int main() { int arr[5]; int arr[5] = {1, 2, 3, 4, 5}; int arr[2][3] = {{1, 2, 3}, {4, 5, 6}}; int arr[1][1] = 1; // 1행 1열 값 변.. 2025. 4. 30.
[PHP] 비교 연산자 ==, !=, ===, !== php에는 == 연산자와 === 연산자가 존재합니다.차이점은 == 연산자는 값의 일치 여부를 확인하며, === 연산자는 값의 일치 여부와 자료형의 일치 여부를 검사합니다.==의 경우 값의 일치 여부만 검사하기 때문에, 자료형이 다를 경우 대충 변환해 보고 맞으면 true를 반환하게 됩니다.여러 경우를 [그림 1]의 표에서 확인할 수 있습니다.===의 경우 값의 일치 여부와 자료형 일치 여부를 검사합니다. 두 가지 모두 만족해야 true를 반환하므로, 자료형이 다르면 다르다고 취급됩니다.엄격한 검사가 필요할 때 ===를 사용하지 않으면, 의도하지 않은 취약점이 발생할 수 있습니다. 참고– https://www.php.net/manual/en/language.operators.comparison.php– h.. 2025. 4. 30.
[PHP] ereg(), eregi() 문자열 검사 함수 문자열 검사 함수 ereg(), eregi()입니다. 문자열 필터링에 많이 사용되었던 함수입니다. 이 두 개의 함수들은 현재는 사용 불가능한 함수지만, 한 번 정리해 봅니다. (사용 불가능한 이유는 아래에서 작성) 1. ereg() 사용법은 ereg([검색할 문자열], [검사할 문자열]) 입니다. 문자열에 admin이 있는지 확인하려면 ereg("admin", $str) 하면 됩니다. $str에 admin이 있는지 검사하는 코드입니다. admin이 있으면 no hack을 출력하고, 그렇지 않으면 $str을 출력합니다. no hack이 출력됩니다. 다만 ereg()함수는 대소문자를 구별합니다. 위의 예제처럼 Admin으로 바꾼 후 실행을 해 보겠습니다. 필터링되지 않는 모습이 보입니다. 이러한 특성 때문에.. 2022. 11. 1.
[PHP] str_replace() 문자열 치환 함수 사용법과 우회 방법 str_replace() 함수는 특정 문자열을 치환하는 함수입니다. 사용 방법은 str_replace([변경 대상 문자열], [변경할 문자열], [해당 문자열]) 입니다. 해당 예제는 "안녕하세요"를 "안녕안하세요"로 바꾸는 코드입니다. str_replace() 인수를 보면 "하세요" -> "안하세요" 이렇게 치환됩니다. 해당 코드의 실행 결과입니다. 치환이 된 것을 볼 수 있습니다. CTF 문제에서 str_replace()로 문자열 필터링을 거는 경우가 있습니다. str_replace() 인자에 따라 우회가 가능합니다. str_replace("admin", "", $str) 이렇게 필터링을 걸어놓았다고 해보겠습니다. admin -> 공백으로 치환됩니다. 결과 페이지에는 [그림 2]처럼 아무것도 뜨지 않.. 2022. 10. 25.