일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- OS Command Injection
- php file upload
- SQLi
- ssrf
- php To Do List
- sql injection
- php login page
- War Game
- file upload
- Authentication
- tryhackme
- BANDiT
- active recon
- privilege escalation
- overthewire
- Cookie
- active reconnaissance
- Server Side Request Forgery
- Leviathan
- php 로그인 페이지 만들기
- Reconnaissance
- over the wire
- Recon
- Cryptography
- access control
- 파일 업로드 취약점
- FTZ
- php
- php 파일 업로드하기
- THM
- Today
- Total
목록php (33)
R's Hacking Daily Log
Step :: Session Session에 대한 개념적인 내용은 여기서 다루지 않을 것이다. php 상에서 Session & Cookie를 어떻게 생성하고 값을 할당할 수 있는지에 대해서만 간단히 살펴보자. Session Example ~세션 만들기~ 세션 값은 여기서 확인!; 세션 mySession에 "Ryu"라는 값을 할당하는 php 코드를 작성했다. 여기서 생성한 mySession 값을 확인하기 위해서는 result_session.php로 이동한다. [result_session.php] Session Example 세션 값은 : 다른 php file에서 세션을 만들었지만 글로벌 변수이기 때문에 코드 상단에 session_start 함수만 기재를 한다면 세션을 사용하는 데에는 지장이 없다는 걸 확인..
Step 1 :: Exception Class 코딩을 하다 보면 문법 상의 오류나 논리적인 오류로 인해 오류가 발생한 적이 있을 것이다. 문법적인 오류는 비교적 쉽게 발견할 수 있지만 논리적인 오류는 고려하지 못한 경우의 수에 의해 발생할 때가 많아 골치 아플 수있다. 이번에 다루어볼 예외 처리란 예상하지 못한 동작으로 인해 발생할 수 있는 오류를 처리하는 걸 의미한다. 프로그램을 만드는 입장에서 고려한 부분이 아닌, 예외적인 경우를 어떻게 처리하면 좋을지에 대한 방안을 알아보자. 처음으로 알아볼 예외 처리 방법은 Exception class이다. 이름대로 Exception은 클래스이기 때문에 객체 생성이 가능하다. Exception class는 기본적으로 내장하는 메서드가 있기 때문에 오류 메시지 & ..
Step :: final 앞에서 살펴보았을 때, 클래스를 상속받기 위해서는 extends keyword를 사용했다! final keyword는 이와 반대되는 개념으로 상속받지 못하게 제한할 때 사용하는 키워드이다. final keyword는 클래스 OR 메서드에만 사용할 수 있는 키워드로 클래스에 사용한 경우를 예시로 알아보자!
Step :: Trait Trait이라는 기능은 앞에서 배운 클래스와 인터페이스 그 사이 어딘가...! 추상 클래스인 듯 아닌 듯 한 애매한 기능이다. 다중 상속의 문제점을 줄이고 공통적으로 사용하는 메서드 & 멤버 변수를 재사용하기 위해 설계된 기능이다 보니 "클래스, 인터페이스와 뭐가 다르지?"라는 애매모호함을 느낄 것이다. 인터페이스와는 달리 함수의 내용을 정의 & 구현을 할 수 있지만 인터페이스처럼 함수를 정의만 해둘 수도 있다. 추상 클래스처럼 비추상 메서드 & 추상 메서드를 포함할 수도 있고 추상 메서드만 정의할 수도 있다. 말 그대로 이 기능 저 기능을 가져다가 입맛대로 쓸 수 있는 기능이라 보면 된다. 어떻게 활용할 수 있을 지 이해를 돕기 위해 코드를 살펴보도록 하자.
Step 1 :: interface 만약 꼭 필요한 함수가 있지만 실행 내용이 모두 다르다면 어떻게 해야 할까? 부모 클래스로부터 상속받아 자식 클래스마다 알맞게 오버라이딩한다? 부모 클래스로부터 파생되는 모든 자식 클래스의 함수 내용이 다르다면 굳이 상속받을 필요 없이 클래스마다 달리 정의해 버리면 될 것이다. 이럴 상황에서 활용할 수 있는 게 인터페이스이다. 인터페이스는 미리 필요한 멤버 변수나 메서드를 정의, 선언만 해둘 뿐 그 내용을 기술하지 않는다. 즉 인터페이스는 큰 틀만 만들어놓고 세부적인 내용은 인터페이스를 가져다 쓰는 클래스에서 작성하면 된다. 상속에서는 extends keyword를 사용했다면 인터페이스는 implements keyword를 사용한다.
Step 1 :: 상속 [ inheritance ] 상속이라는 개념은 실세계에서 말하는 상속과 동일한 의미를 내포한다. 기존의 생성한 클래스와 유사하지만 몇 개의 기능이 추가된 또 다른 클래스를 만들고자 할 때 상속이라는 기능을 활용할 수 있다. 상속받는 클래스를 자식 클래스, 상속 해주는 클래스를 부모 클래스라고 부른다. 이때 자식 클래스는 부모 클래스의 멤버 변수, 메서드 등 모든 구성 요소를 사용할 수 있게 되며 추가로 자신 만의 메서드와 멤버 변수를 정의할 수 있다. ** 접근 제어자 파트에서 정의했듯이 부모 클래스에서 private 접근 제어자로 정의한 property나 method에는 아무리 자식 클래스라고 하더라도 접근 권한이 주어지지 않는다. 부모 클래스 역할을 할 Parents class..
Step 1 :: 의사 변수 this 앞에서는 클래스가 무엇이고 객체가 무엇인지 훑어본 느낌이라면 지금부터 살펴볼 내용은 클래스나 객체와 관련된 개념들을 얹어가는 느낌이다. 첫 번째로 살펴볼 내용은 this이다. 의사 변수 this는 메서드 내에서만 사용할 수 있는 예약어이다. 다른 말로 하자면 클래스 안에 정의된 함수로 활용 영역이 제한된다. this는 현재 자기 자신을 의미하는 데 쉽게 말해 클래스를 지칭한다.
Step 1 :: 객체 지향 프로그래밍 객체 지향 프로그래밍이란 단순한 문법이나 코딩 스타일이 아닌 하나의 패러다임이라 할 수 있다. 객체가 고유의 기능을 수행하고 서로 간의 상호 작용도 하면서 프로그램의 전반적인 기능이 구축되는 걸, 객체 지향 프로그램이라 할 수 있다. 객체 지향 프로그래밍을 하기 위해서는 실재하는 대상을 소프트웨어 상으로 옮기는 과정, 추상화가 필요하다. ** 추상화란 객체의 핵심점인 특징, 개념, 기능을 추출하여 표현하는 것을 말한다. 예를 들어 코끼리를 추상화한다면 "다리가 4개 있고 몸무게가 많이 나가며 코가 길다"라고 할 수 있다. Step 2 :: 클래스와 객체 [ Class & Object ] 그렇다면 객체란 무엇이며 코드 상에서 어떻게 만들어낼 수 있을까? 객체란 주체가..