분류 전체보기359

JSP 액션태그 1. JSP 액션태그 - 외부에 사용 (1) JSP 액션태그는 서버가 해석 (2) 액션태그 ① 다른페이지를 현재페이지에 포함시킬 때 사용 ② include 디렉티브()는 소스의 내용이 텍스트로 포함, but, include 액션태그()는 페이지의 처리 결과(JSP, HTML, Servlet)를 포함 ③ 는 페이지를 모듈화 시 사용 (3) 액션태그 가 출력 ⑤ 파라미터를 받을 때는 URI로 넘어온 것을 받아도 되고, param으로 넘어온 것도 사용가능 ⑥ 는 페이지의 흐름 제어 시 사용 (4) 자바빈과 액션태그 ① id는 생성할 객체명, class는 패키지명.클래스명, scope는 생략가능, 기본=page ② 3개 속성이 모두 같으면 같은 객체 ③ style first = new style(); ④ nam.. 2018. 8. 12.
JSP 기본상식 1. JSP 기본상식 (1) request = 클라이언트가 서버로 요청정보 저장 (2) response = 서버가 클라이언트에게 응답정보 저장 (3) out = 출력 스트림 객체 (4) 서버는 정보만 보고 HTML문은 클라이언트에게 전달 2018. 8. 12.
JSP 기본문법 Java Server Page 1. JSP 기본문법 (1) out.println( ); = 출력은 되지만 \n이 되지는 않는다. (2) String str = ""; str += ""; = 변수에 저장 후 변수를 출력 (3) request.setCharacterEncoding("utf-8"); = 요청한 파라미터의 캐릭터인코딩을 utf-8로 처리 (4) String uAge = request.getParameter("age"); = 항상 String type로 넘어오고 String type의 변수명에 uAge값으로 age의 파라미터 값을 요청받는다. (5) String[] strHobby = request.getParameterValues("hobby"); = String type의 배열형태로 hobby.. 2018. 8. 12.
File Upload 1. File Upload - 악성스크립트 (Web shell 등의 백도어) File을 Web Server에 침투시키는 보안취약점을 말한다. + Web Shell은 Web상에서 System에서 할 수 있는 모든 것을 할 수 있다. 1) Bind Shell Vs Reverse Shell [1] Bind Shell - 공격 대상이 자신의 호스트에 listener port를 열고 들어오는 요청을 대기하게 만드는 shell을 말한다. - 공격자는 사설 ip를 사용해도 무관하며, 서버는 공인ip를 사용하여야 한다. - Web Server에 netcat을 띄운다. + nc [Server IP] [port number] [2] Reverse Shell - 공격 대상이 공격자에게 통신하도록 만드는 shell을 말한다... 2018. 8. 12.
File Inclusion 1. File Inclusion - Web Server의 resource를 권한 없이 가져오는 것을 말한다. - Open source로 개발 된 Application은 디렉토리 구조가 알려져 있어서 $_GET, $_POST, $_Cookie 값을 전달 받을 때 매개변수의 값을 서버에서 검증하지 않아 취약점이 있다. - 공격자가 대상 서버의 URL을 통해 공격코드를 삽입하여 공격을 시도한다. 1) 공격방법 - 서버의 URL을 통해 공격 코드를 삽입하여 공격한다. - http://192.168.111.104/?page=/etc/passwd 와 같이 출력할 것을 작성한다. 2) RFI Attack(Remote File Include) - 악성 스크립트를 서버에 전달하여 실행하는 방법이다. - 원격지의 파일을 .. 2018. 8. 12.
프로토콜 분석 1. 웹 프로토콜 분석 [1] 웹 구조 [2] http 1.0 / http 1.1 동작원리 [3] http 프로토콜 [요청] [4] http 프로토콜 [응답] [5] http 프로토콜[구성] [6] http 프로토콜[요청라인] [7] http 프로토콜[상태라인] [8] http 프로토콜[상태코드] [9] http 프로토콜[헤더] [10] http 프로토콜[메소드] [11] http 프로토콜[방식] [12] http 프로토콜[동작과정] 2018. 8. 12.
Command Injection 1. Command Injection - 원격 명령어 실행 취약점 - 공격 시 공격자는 자신이 실행하고자 하는 명령어를 서버에 원격으로 실행 가능 1) 환경 - Unix or Linux 운영체제를 사용하여 명령어를 실행할 수 있도록 만들어 놓은 사이트 및 Application [ex) ping test] - kali linux 2018.1 운영체제의 공격자 클라이언트 - 공격자 클라이언트에 설치된 Burp Suite[proxy server기능, 값 변조를 위해] 프로그램을 사용 - 서버와 클라이언트 간의 오고가는 패킷을 확인하기 위해 firefox 프록시기능 on 2) 선행지식 - 명령어 ; 앞 명령어 실행 후 뒤 명령어 실행 && 앞 명령어가 참이면 뒤 명령어 실행 || 앞 명령어가 거짓이면 뒤 명령어.. 2018. 8. 12.
brute force 1. Brute Force Attack - 무차별 대입공격 - 공격자가 계정의 암호 값에 입력할 수 있는 모든 값을 대입하여 암호를 해독하는 공격 1) 환경 - ubuntu 16.04 desktop 운영체제의 php로 만들어진 웹서버 - kali linux 2018.1 운영체제의 공격자 클라이언트 - 공격자 클라이언트에 설치된 Burp Suite[proxy server기능, 값 변조를 위해] 프로그램을 사용 - 서버와 클라이언트 간의 오고가는 패킷을 확인하기 위해 firefox 프록시기능 on 2) 시연 [1] 클라이언트에서 웹 서버 접속 후 프록시 잡아서 내용 확인 [2] 우클릭 후 send to Intruder 를 클릭하여 공격할 서버 확인 [3] 공격타입에서 원하는 것을 선택 후 입력정보에 해당하는.. 2018. 8. 11.
제너레이터_문제 1. 제너레이터를 이용한 피보나치수열 def fibonacci_func(n): a,b = 0, 1 i = 0 while True: if (i > n): return yield a a, b = b, a+b i += 1 fibonacci = fibonacci_func(10) for x in fibonacci: print x, [실행결과] 0 1 1 2 3 5 8 13 21 34 55 2018. 8. 10.
제너레이터 1. Generator - iterator를 생성해주는 함수이다. - 겉보기에는 일반적인 함수와 비슷해 보이지만 return 대신에 yield 라는 것이 있다는 것이 차이점이다. 1) 일반함수 - return문을 사용하여 결과 값을 반환하고 stack pointer 복구 후 함수를 종료한다. 2) yield - 함수가 실행 중 yield를 만나면 함수는 일시정지 +[상태 유지(지역변수 및 instruction pointer는 메모리에 유지)] - 반환값을 next() 메소드를 호출한 쪽으로 전달 def generator() : print "start" for x in range(5) : yield x*x for i in generator() : print i, [실행결과] start 0 1 4 9 16 .. 2018. 8. 10.
이터레이터 1. iterator(이터레이터)란? - next() 메소드를 이용하여 데이터를 순회하는 object를 말한다. - 전부 순회한 경우(마지막 데이터 순회) StopIteration exception 발생시킨다. 2. iterable(이터러블)이란? - 멤버를 하나씩 차례로 반환 가능한 object를 말한다. - 종류에는 순차접근이 가능한 list, str, tuple 등이 있다. [소스]for i in range(1,4) : print i, [실행결과] 1 2 3 - 위와 같은 for문도 내부적으로 보면 range() 함수로 생성된 list가 iterable하여 순차적으로 멤버에 접근하고 반환하여 사용한 것이다. - 순차접근이 불가능한 dict 및 file도 iterable 하다. [소스]data = {.. 2018. 8. 10.
입력 1. 입력 - input()함수를 사용 1) 문자 입력word = input("input data = ") print word [실행결과] input data = abcd abcd 2) 숫자 입력 - input()함수의 기본 format이 string이기 때문에 int형으로 변환을 해주어야 한다. x = int(input("first number = ")) y = int(input("second number = ")) result = x + y print 'result =', result print type(result) [실행결과] first number = 10 second number = 20 result = 30 2018. 8. 10.