kh교육

(20250910049) 데이터베이스 , 패킷, 해킹 툴

boangod 2025. 9. 10. 17:19

정렬을 이용한 자료검색

 

order by는 문장 항상 맨 뒤에 온다.

select * from emp;

select * from emp order by sal;

위 두 개는 다르다.

위에는 바로 데이터가 나오는데 밑에는 첨부터 끝까지 데이터를 읽고 그에 맞게 정렬돼서 나옴.

 

 

 

정렬검색

 

SELECT * | [DISTINCT] 컬럼|수식 [AS 별명], ......

FROM 테이블

ORDER BY 컬럼 [ASC|DESC], 컬럼 [ASC|DESC], ......

 

ORDER BY : 지정된 컬럼을 대상으로 정렬을 수행한다.

‐ ASC는 오름차순정렬, DESC는 내림차순정렬을 지정한다.

    . default : ASC

‐ 정렬대상인칼럼이 여러 개인 경우 앞에 지정한 컬럼이 동일한 값에 대해서 뒤에 지정된 컬럼으로 정렬된다

‐ 정렬하지 않는 SELECT문의 출력순서는 의미가 없다.

‐ 정렬대상으로는 컬럼 이외에 다음의 것들이 사용가능하다.

    . 별명, 수식, 검색 항목순서

 

 

예)

SQL> SELECT eno 사번, ename 이름, sal 급여

2 FROM emp

3 ORDER BY sal DESC;

 

SQL> SELECT eno 사번, ename 이름, sal 급여

2 FROM emp

3 ORDER BY 급여 DESC;

 

SQL> SELECT eno 사번, ename 이름, sal 급여

2 FROM emp

3 ORDER BY 3 DESC;   ← 가급적 쓰지 말자!!

ㄴ 앱 개발할 때는 사용하지 말기…(*표도,,)

 

SQL> SELECT eno 사번, ename 이름 2 FROM emp 3 ORDER BY sal*12+nvl(comm,0) DESC;

‐ SQL문은 의미가 있으나 검색결과는 의미를 알기 어렵다.

‐ sal*12+nvl(comm,0)를 검색하거나 적당한 별명을 추가한다.

 

SQL> SELECT eno 사번, ename 이름, sal 급여, comm 보너스

2 FROM emp

3 ORDER BY sal DESC, comm DESC;

 

 

묶음검색

• 업무 별로 사원의 급여를 검색한다.

 

SQL> SELECT job 업무, eno 사번, ename 이름, sal 급여

2 FROM emp

3 ORDER BY 업무;

 

• 부서별로 사원의 급여를 검색한다.

SQL> SELECT dno 부서번호, eno 사번, ename 이름, sal 급여

2 FROM emp

3 ORDER BY 부서번호, sal DESC;

 

 

의미 없는 검색

SQL> SELECT dno 부서번호, eno 사번, ename 이름, sal 급여

2 FROM emp

3 ORDER BY sal, dno;

 

‐ 결과에 ORDER BY절의의미가 없다.

 

 

• 카디널리티(Cardinality)

‐ 중복정도

‐ job: 카디널리티가 낮다. → 중복된 값이 많다.

‐ eno: 카디널리티가 높다. → 중복된 값이 적다.

 

 

WHERE절을 이용한 조건검색

 

조건검색

SELECT * | 컬럼, ……

FROM 테이블

WHERE 검색조건

ORDER BY 컬럼 [ASC|DESC], 컬럼 [ASC|DESC], ......

 

‐ 조건을 통해 테이블의 일부행만을 검색한다.

‐ 조건은 컬럼을 대상으로 데이터를 제한한다.

‐ 조건에는 비교연산자가 사용된다.

    .=, <, >, <=, >=

    .!=, <>, ^=

 

‐ 지문에 대한 이해가 필요하다.

    . 테이블의 구성을 기억해야한다.

 

varchar2를 사용하자 무조건

숫자는 무조건 넘버 타입

날짜는 시리얼 넘버가 들어가 있음.

 

다양한 조건검색

• 사원 중에 급여가 4000 이상인사원을 검색한다.

• 이름이 문시현인사원을 검색한다.

• 10번 이외 부서정보를 검색한다.

 

SQL> SELECT eno 사번, ename 이름, sal 급여

2 FROM emp

3 WHERE sal >= 4000;

 

SQL> SELECT * FROM emp

2 WHERE ename = '문시현';

= 는 문자검색에서 많이 사용하지는 않음.

 

SQL> SELECT * FROM dept

2 WHERE dno != '10';

 

 

잘못된 조건검색

 

SQL> SELECT * FROM emp

2 WHERE dno != 10;

 

‐ dno에 대한조건기술이 틀림

‐ 결과는 정상적으로 검색됨

‐ 오라클(대부분의 RDBMS)은 자동형 변환기능을 수행함

‐ 절대 방치해서는 안됨!!!

 

 

다양한 조건검색

 

• 급여가 4000 이상인사원을 급여순으로 검색한다.

• 연봉이30000 이상인사원을부서별로검색한다.

 

SQL> SELECT eno 사번, ename 이름, sal 급여

2 FROM emp

3 WHERE sal >= 4000 4 ORDER BY sal DESC;

 

SQL> SELECT dno 부서, eno 사번,

2 ename 이름, sal12+nvl(comm,0) 년봉

3 FROM emp

4 WHERE sal12+nvl(comm,0) >= 30000     ← 년봉 >= 30000 사용 불가!!

5 ORDER BY dno;

 

• 날짜형식변경과 확인

ALTER SESSION SET NLS_DATE_FORMAT ='YYYY/MM/DD';

SELECT *

FROM NLS_SESSION_PARAMETERS

WHERE PARAMETER = 'NLS_DATE_FORMAT';

 

‐ YYYY/MM/DD:HH24:MI:SS

‐ DD-Mon-RR

 

 

 

관계연산자와 부정연산자

• 조건이 여러 개인 경우 나부점검색인경우관계연산자가 사용된다.

    ‐ AND, OR, NOT

• 회계업무를 담당하는 여성사원을 검색한다.

• 회계업무와 분석업무담당사원을 검색한다.

• 회계업무 이외 업무는 어떤 업무가 있는지 검색한다.

 

SQL> SELECT * FROM emp

2 WHERE job='회계' AND sex='여';

 

SQL> SELECT * FROM emp

2 WHERE job='회계' OR job='분석';

 

SQL> SELECT DISTINCT job FROM emp

2 WHERE NOT job='회계';      ← job != '회계'

 

 


 

 

패킷

 

arp 헤더

arp는 상대방의 네트워크 레이어의 주소를 알고 있지만 상대방의 링크레이어주소를 모르기 때문에 사용함

ㄴ 주소의 길이가 들어가 있음.()

arp질의에 mac주소는 브로드캐스트로 보낸다.(하지만 규정이 아님.)

arp응답은 유니케스트(응답이 브로드캐스트면 arp스푸핑을 막기 때문에 자신의 mac주소를 주변에 뿌린다.)

 

포트넘버는 내가 접속하고자 하는 시스템의 app의 포트넘버

ip는 내가 접속하고자 하는 컴퓨터

맥 어드레스를 알려고 하는 상태

 

 

• H/W Type (하드웨어 타입) : 하드웨어 주소(Network 유형) http://www.iana.org/assignments/arp-parameters/ 참조

  • Ethernet : 1

• Protocol Type

  • 어떠한 유형의 프로토콜(IPv4, IPv6, ATM 등)을 사용하는가 정의
  • IPv4 : 0x0800

• H/W Length : H/W type에서 사용하는 주소의 길이

  • Ethernet : 6byte

• Protocol Length : Protocol Type에서 사용하는 주소의 길이

  • IPv4 : 4byte

• OP : ARP와 RARP를 구별하기 위해 사용(어떤 용도의 패킷이냐.)

  • 1 : ARP요구, 2 : ARP응답
  • 3 : RARP 요구, 4 : RARP 응답(지금은 안 씀. 안 보인다.)

ㄴ rarp는 내 맥주소로 내가 쓸 아이피를 알아내는 거.

 

• SA, Sender IP : Sender의 MAC과 IP

• DA, Target IP : Destination의 MAC과 IP

 

 

arp는 헤더밖에 없다. 자기 자신이 페일오더

 


 

john the ripper

비밀번호 크랙하는 툴

 

apt install -y john

 

 

John the Ripper 배포본은 아직 YESCRYPT 방식의 hash를 지원하지 않음.

 

 

vi /etc/login.defs

#ENCRYPT_METHOD YESCRYPT

ENCRYPT_METHOD SHA512   -> 추가

 

vi /etc/pam.d/common-password

#password [success=2 default=ignore] pam_unix.so obscure yescrypt

password [success=2 default=ignore] pam_unix.so obscure sha512    -> 추가

 

 

패스워드 크랙

# unshadow /etc/passwd /etc/shadow > passwd.1

john passwd.1

 

하면 비밀번호를 크랙 한다.

 

 

'kh교육' 카테고리의 다른 글

(20250909048)sql  (0) 2025.09.12
(20250911050)sql, icmp  (0) 2025.09.11
(20250909048)데이터베이스, 패킷 이해  (0) 2025.09.09
(20250908047)데이터베이스, 와이어샤크  (0) 2025.09.08
(20250905046) kali리눅스  (0) 2025.09.05