DataBase

일반적인 웹의 구조는 아래와 같다
WEB <=> WAS <=> DB

WAS의 동적화면이나 API를 개발할 때 사용되는 데이터의 저장을 담당하는것이 DB이다.

데이터베이스(영어: database, DB)는 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합이다.
-위키백과-

Table은 컬럼(column)과 로우(row)로 구성되며 컬럼의 데이터의 속성, row는 속성들의 집합이다.

위키백과

비유

DataBase: 엑셀파일

Table: 엑셀 시트

컬럼: 엑셀의 열

로우: 엑셀의 행


SQL

관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계한 특수 목적의 프로그래밍 언어이다. 관계형 데이터베이스 관리 시스템에서 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안하였다.
-위키백과-

즉 DB의 데이터를 관리하기 언어이다.

SQL은 크게 3가지로 나뉘게된다.

  • 데이터 정의 언어 (DDL : Data Definition Language) : DB의 구조 혹은 Table의 구조의 정의, 변경 (create, drop, alter)
  • 데이터 조작 언어 (DML : Data Manipulation Language): 데이터의 생성, 조회, 수정, 삭제 (insert, select, update, delete)
  • 데이터 제어 언어 (DCL : Data Control Language): 사용자 권한 부여 및 제거 등.(grant, revoke)

SELECT 간략한 구조

select [컬럼 명] from [테이블명] where [조건]

insert 구문의 간략한 구조

insert into [테이블] (컬럼명1, 컬럼명2) value ('값1', '값2')

'웹 해킹 코스 > 내용 정리' 카테고리의 다른 글

5주차 SQL Ijection  (2) 2023.11.26
4주차 (burp suitte)  (0) 2023.11.15
3주차 (쿠키, 세션)  (0) 2023.11.08
0주차 (리눅스 기초 명령어)  (2) 2023.10.26
1주차(WEB, WAS, IP, NAT)  (0) 2023.10.26

-rw-rw-rw- 1 [uid] [gid] [용량] [파일 생성, 업데이트 일시] [파일명]

가장 앞의 “-”는 파일을 의미, “d”는 디렉토리를 의미.

디렉토리 별 역할

/bin: 실행파일 Ex)ls, pwd 등

/dev: 하드웨어 장치 파일

/etc: 리눅스의 설정파일 Ex) conf, profile 등

/home: 각 계정별 home 디렉토리

/lib: 공유 라이브러리 파일 (.so 파일은 윈도우의 dll파일)

/root: root계정의 홈 디렉토리 /sbin: 시스템 바이너, 시스템 관리를 위한 명령

/tmp: 누구나 사용가능, 재기동시 파일들이 모두 사라짐

/var: 리눅스에서 사용하는 프로그램들이 사용하는 파일 보관

/etc/passwd: 리눅스의 사용자 계정 파


기본적인 명령어

file [파일명]: 파일의 정보 확인 more [파일명]: 파일을 한 화면단위로 읽기( space를 사용하여 다음페이지) cp [src] [dist] rm [파일명] -r {디렉토리 삭제} -f{강제삭}: useradd [유저명]: 유저생성 su [유저명]: 유저 변경


특수권한

setuid: 파일을 실행할 때 소유주 권한으로 실행 Ex) setuid가 root라면 kali가 실행하도 내부 명령어도 root로 실행

-rws: 실행 권한 있음 + setuid 설정됨

-rwS: 실행권한 없음 + setuid 설정

setguid: 파일의 그룹의 권한으로 실행

sticky bit: 공유 디렉토리 설정(누구나 마음껏 파일을 생성 할 수 있다. 단 삭제는 생성한 사용자만 삭제 가능)

Ex)rwxrwxrwt


권한 수정

chomd [] u(사용자), g(그룹), o(기타)

+(권한 추가), - (권한 삭제)

rwx (읽기, 쓰기, 실행)

Ex) chmod u-r (사용자 권한 에서 읽기권한 삭제)


Find 사용법

파일 찾고 실행

find ./ -type f -exec sh -c "cat {}; echo;" \; 

//find: 파일찾기 // ./: 시작 위치

// -type f : 찾는 타입은 파일(d는 디렉토리, l은 링크)

// -exec sh -c: 찾은 파일로 실행할 명령어

// cat {}: 파일 읽기 {}는 찾은 파일명이 들어갈 위치

// echo: 개행을 위해

용량으로 파일 찾기

find ./inhere -type f -size 1033c -exec sh -c "cat {}; echo;" \;

// -size 1033c: 1033바이트 (b: 블록, c:바이트, k:키로바이트, m:메가바이트, g:기가비이트)

// -1033c: 1033바이트 "이하" +1033c: 1033바이트 이상

권한으로 파일찾기

find / -type f -size 33c -user bandit7 -group bandit6 -exec sh -c "cat {}; echo;" \;

find / -type f -user bandit7 2>/dev/null

// -user 사용자명

// -group 그룹명

// 1>/dev/null : 1은 정상적인 출력을 의미 /dev/null은 null로 출력(즉 출력하지 않는다.)

// 즉 정상 출력을 표시하지 않음

// 2>/dev/null: 2는 에러를 표시 즉 에러는 표시하지 않는다.


cat 사용법

정렬 및 유니크

cat data.txt | sort |uniq -u // sort: 정렬

// uniq -u: 유일한 라인만 표시 (-d 중복되는 라인만 표시, -c 중복횟수 표시)

파일명이 공백이 있 경우

cat spaces\ in\ this\ filename

// 파일 명에 공백이 있을경우 \를 사용


Data Stream

표준 입력: 0 표준 출력: 1 표준 에러: 2

[표준입력]=============================⇒

[사용자] <=======⇒ [운영체제] ≤=====⇒[컴퓨터]

≤============================= [표준 출력]

Redirection

표준 입력을 넣으면 표준 출력(에러가 발생하지 않는다면)이 발생한다. 해당 표준출력을 다시 입력으로 변환하는 것이 Redirection이다.

Ex1) pwd 1> test.txt (pwd의 결과를 입력으로 test.txt에 사용)

Ex2) pwd >> test.txt(overwirte가 아닌 append, >의 기본은 1이며 생략가능)

Ex3) find / -name “rockyou.txt.gz” 2> error (해당 명령어의 permission denid가 입력으로 redirection되어 파일에 쓰인다.) Ex4) find / -name “rockyou.txt.gz” 2> /dev/null (”/dev/null”은 쓰레기통으로 파일을 집어넣으면 사라지게 된다.)

Ex4)는 표준 에러는 “/dev/null”에 파일로 생기고(그러나 도착지가 쓰레기통이기 때문에 안보임) 표준 출력은 출력으로 나타난다.

'웹 해킹 코스 > 내용 정리' 카테고리의 다른 글

5주차 SQL Ijection  (2) 2023.11.26
4주차 (burp suitte)  (0) 2023.11.15
3주차 (쿠키, 세션)  (0) 2023.11.08
2주차 (DB)  (0) 2023.11.01
1주차(WEB, WAS, IP, NAT)  (0) 2023.10.26

웹서버(WEB Server)

파일을 전달하는 역할 (정적 리소스)

 

브라우저를 통해 파일을 요청 할 수 있다. URL: [프로토콜]://[도메인 or IP]:[포트]/[파일명]

[Web Root 경로]: 웹이 실행된 경로 웹 루트 경로 이상의 데이터를 받을 수 없다.

만약 /경로에 웹서버를 실행하게 된다면 많은 파일을 접근 할 수 있다.

 

프로토콜 기본 포트

http: 80 https:443

WAS: Web Application Server

동적페이지 및 api를 제공

method: GET / POST Get: 데이터의 전달을 쿼리스트링(URL)에 포함됨

쿼리스트링: path?key1=value1&key2=value2

 

POST: 데이터의 전달을 Request Body에 포함되어 전달된다.

 

Front-End: 클라이언트 측 (브라우저) javascript

Back-End: 서버 코드(WAS) PHP, ASP, SAP


Internet Protocol adress(IP address)

데이터를 송,수신을 위한 네트워크 주소로 네트워크에 연결된 장치는 이 특수한 번호를 가지고 있어야한다.

그러나 숫자로 이루어진 IP addess는 사람이 외우기 어렵기 때문에 전화번호부 같은 역할을 하는 것이 필요하다.

이를 DNS(Domain Name System)이 필요하며 naver.comxxx.xxx.xxx.xxx 와 같이 문자열을 ip 주소로 변환하는 시스템 서비스 이다.

 

IP는 Class가 존재하며 해당 클래스 별 host(사용할 수 있는 Sub IP address) IP address가 달라진다.

예를 들어 A Class를 가진 IP address 192.xxx.xxx.xxx IP address는 하위 24비트의 IP주소를 사용 할 수 있다.

IP address는 약 43억개의 한정된 주소를 사용할 수 있다 그러나 라우터, PC, 등 많은 장비로 인해 IP Address가 부족하게 되었고 이를 해결하기 위해 IPv6, Private Network(이하 사설망)등이 사용되고 있다.

Private Network(사설망)

사설망은 IPv4 공인망을 사용하는 것이 아닌 내부망을 사용하는것으로 별도의 Network 설정을 하지 않는다면 외부Network 접근은 불가능하며 같이 연결된 내부 Network간의 연결만 가능하다.

 

집의 PC에서 WEB Server를 기동해도 wifi를 사용하지 않은 휴대폰으로 접속이 불가능 한 것이 이와 같다.

PC가 집 공유기와 연결되어있고 휴대폰이 해당 공유기의 WIFI신호를 사용하고 있다면 두 기기는 사설망을 사용하고 있는 것으로 http:[IP]/[Path]:[Port]를 사용하여 접근 할 수 있다.

 

그러나 사설망의 IP를 그대로 사용하여 외부로 나가게 된다면 중복된 IP 등으로 인해 응답을 받을 수 없다. 그렇기 때문에 내부 IP를 공인 IP로 변환하는 작업이 필요하며 이를 NAT라 한다.

NAT(Network Address Translation)

IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술을 말한다. -위키백과-

 

즉 내 PC에서 출발지 주소를 사설망 IP 192.100.100.1로 출발지 IP를 설정해서 전달하고 중간의 NAT가 공인 IP로 200.200.200.105로 변환하여 인터넷으로 전달한다.

[내 PC] =================⇒ [NAT] ==================⇒ [인터넷]

[192.100.100.100.1]<=======⇒[변환]<=============⇒[200.200.200.105]

[내 PC] <================== [NAT] <================= [인터넷]

그러나 내부의 사용 장비가 2대 이상이이라면 응답을 받을 때 어느 장비로 돌아가는 지 알 수 없다. 이러한 상활을 방지하기 위해 PAT를 사용한다.

PAT(Port Address Translation)

[PC 1] =======================⇒ [NAT] ==================⇒ [인터넷]
[192.100.100.100.1:9999]<=========⇒[변환]<=================⇒[200.200.200.105:10000]
[PC 1] <============== ==========[NAT] <================== [인터넷]


[PC 2] ===============⇒ [NAT] ==================⇒ [인터넷]
[192.100.100.100.1:8888]<=========⇒[변환]<=============⇒[200.200.200.105:20000]
[PC 2] <============== [NAT] <================= [인터넷]

 

PAT는 이름과 같이 Port를 변경하는 역할을 하며 응답을 받을 때 목적지 포트가 10000이라면 PC1로 목적지 포트가 20000이라면 PC2로 응답을 전달한다.

'웹 해킹 코스 > 내용 정리' 카테고리의 다른 글

5주차 SQL Ijection  (2) 2023.11.26
4주차 (burp suitte)  (0) 2023.11.15
3주차 (쿠키, 세션)  (0) 2023.11.08
2주차 (DB)  (0) 2023.11.01
0주차 (리눅스 기초 명령어)  (2) 2023.10.26

+ Recent posts