1. 운영체제에 독립적 ⇒ 기존의 언어는 한 운영체제에 맞게 개발된 프로그램을 다른 종류의 운영체제에 적용하기 위해 많은 노력 필요 ⇒ 자바 응용프로그램은 OS나 하드웨어가 아닌 JVM(자바가상머신)과 통신 ⇒ JVM이 자바 응용 프로그램으로부터 전달받은 명령을 해당 OS가 이해할 수 있도록 변환하여 전달 ⇒ 자바로 작성된 프로그램은 OS에 독립적이지만 JVM은 OS에 종속적이어서 썬에서는 여러 OS에 설치할 수 있는 서로 다른 버전의 JVM을 제공 ⇒ 자바로 작성된 프로그램은 OS와 하드웨어에 관계없이 실행 가능 ⇒ '한 번 작성하면, 어디서나 실행(Write once, run anywhere)'고 표한하기도 함 2. 객체지향언어 ⇒ 자바는 프로그램의 대세로 자리 잡은 객체지향 프로그래밍언어(Objec..
SQL 인젝션 공격 SQL 인젝션 공격 이란 데이터베이스에 전송되는 SQL 쿼리문을 사용자 입력으로 조작하여, 데이터베이스 내의 데이터를 변조하거나 허가되지 않은 정보에 접근 할 수 있는 공격이다. 웹사이트의 회원정보 등 개인정보를 빼낼 때 최근까지도 자주 쓰이는 웹 공격이다. 실제 사례 · 2011년 소니 해킹 2011년에 소니 데이터베이스가 SQL 인젝션 공격을 당해 100만 명의 회원정보와 350만 개의 디지털 쿠폰 등이 탈취 · 2015년 뿜뿌 해킹 뿜뿌 사이트가 해킹 되어 190만의 회원정보가 유출 · 2015년 어나니머스 WTO 해킹 유명한 해킹그룹인 어나니머스가 WTO 세계무역기구의 한 사이트를 SQL 인젝션 공격으로 해킹하여 수천 명의 각국 재직자 정보를 유출 두 가지의 기본적인 SQL 인..
이번에는 High 단계에서 실습해보자. DVWA Security Level을 High로 설정한다. 이번에도 프록시 history 기능을 통해서 어떻게 전달 되는지 확인한다.CAPTCHA 메뉴로 가서 password는 normal을 입력하고, captcha 값을 입력해준다. change 버튼을 누른다. 이번에는 두 단계에 걸치지 않고 바로 패스워드가 변경된다. 이제 Low, Medium 단계의 방식으로는 공격을 할 수 없게 되었다. 소스 코드를 한 번 살펴보자. 이 부분은 captcha가 실패했을 때 처리하는 부분이다. if문의 조건을 자세히 살펴보면 응답이 vaild 하지 않으면(!$resp->is_valid 부분) 뒤에 추가로 조건을 검사하고 있다. 그 조건은 'recaptcha response fie..
DVWA Security Level을 medium으로 설정하고 Insecure CAPTCHA로 들어간다. Low 단계에서 작업했던 것 처럼 password는 'normal'로 입력하고 captcha부분을 작성한다. change 버튼을 두 번 누른다. HTTP history를 확인해보면 이번에도 Law 단계와 마찬가지로 두 단계에 걸쳐서 패스워드를 변경하고 있음을 알 수 있다. 두 번째 요청의 내용을 보면 이전 Law 단계의 두번 째 요청과 같이 step 파라미터의 값이 2이고 password 역시 같이 전송한다. 한 가지 추가된 것은 passed_captcha 파라미터인데 아마도 이 파라미터를 추가로 넣어서 captcha를 제대로 입력했는지 확인하려고 한 것일 것이다. 이 요청을 Repeater로 보내서..
오늘은 테두리 선 스타일 중 자주 사용되는 세 가지 속성에 대해 알아보도록 하겠습니다. 먼저 기본 값은 none입니다. 즉, 테두리 스타일을 지정하지 않으면 테두리 색상이나 두께를 지정하더라도 화면에 표시되지 않습니다. 따라서 테두리를 그리기 위해서는 맨 먼저 테두리 스타일을 지정해야 합니다. border-style 대표 속성 세 가지 1. solid => 테두리를 실선으로 표시합니다. 2. dotted => 테두리를 점선으로 표시합니다. 3. dashed => 테두리를 짧은 선으로 표시합니다.
오늘은 웹 폰트(web font)를 사용하는 법에 대해 알아보도록 하겠습니다. 웹 폰트(Web font)란? 먼저, 웹 폰트란 웹 문서를 작성할 때 웹 문서 안에 글꼴 정보도 함께 저장했다가 사용자가 웹 문서에 접속하면 글꼴을 사용자 시스템으로 다운로드시키는 방식입니다. 결국 사용자 시스템에 없는 글꼴이더라도 웹 문서를 통해 필요한 글꼴들을 사용자 컴퓨터에 다운로드한 후 표시하기 때문에 웹 제작자가 의도한 대로 텍스트를 표시할 수 있습니다. 다운로드 없이 웹폰트를 사용하는 방법 구글에서 무료로 제공하는 웹 폰트를 사용하면 따로 다운로드 할 필요 없이 직접 링크해 사용할 수 있습니다. https://fonts.google.com에 접속하면 구글에서 제공하는 여러 웹 폰트가 나열되어 있습니다. 저는 웹 사이..
오늘은 visual studio code에서 html로 출력할 때 한글이 깨지는 현상을 없애는 법에 대해 알아보겠습니다. 먼저 위의 코드를 html로 출력했을 때의 화면입니다. 한글이 깨져서 나온다? 는 십중팔구 인코딩 문제입니다. visual studio code의 우측 하단을 보면 UTF-8로 되어있는 인코딩을 확인할 수 있습니다. "UTF-8"을 먼저 클릭합니다. 다음으로 저는 visual studio code를 영문 버전으로 다운받았기 때문에 Reopen with Encoding이라고 나와 있으나 한글버전일 경우 '인코딩하여 다시 열기'를 클릭합니다. Korean의 일부를 입력하면 그와 관련된 목록이 나옵니다. Korean(EUC-KR)을 클릭해줍니다. UTF-8이 Korean(EUC-KR)로 바..
악성 쿼리 오늘은 악성 쿼리문에 대해 알아보도록 하겠습니다. 악성 쿼리문이란 서버의 처리량을 많이 사용해서 결국 서버의 전반적인 성능을 나쁘게 하는 쿼리문을 뜻합니다. 비유를 하자면 많은 사람(쿼리문)이 음식을 주문하기 위해 줄 서 있는데, 어떤 사람(악성 쿼리문)이 계속 판매원에게 필요치 않은 질문을 던져서 뒤에 서 있는 다른 수많은 사람들이 음식을 주문하는데 시간이 오래 걸리는 것과 같습니다. SQL 초보자들은 결과만 나오면 잘 된 것처럼 느끼지만 실무에서는 얼마나 효과적으로 결과를 얻느냐가 중요한 이슈가 되기 때문에 잘못된 악성쿼리를 자꾸 만들지 않도록 신경을 써서 SQL문을 만들 필요가 있습니다.
ARP 다이렉트란? ARP 리다이렉트란 공격자가 자신을 라우터라고 속이는 것입니다. 즉, 희생자들의 패킷이 공격자를 한번 거쳐서 라우터로 가도록하는 공격입니다. 이를 통해 공격자는 희생자가 어떤 패킷을 외부망으로 보내는지를 알아낼 수 있습니다. 실습환경 공격자 시스템 : 칼리 리눅스 희생자 시스템 : 윈도우 10 ARP 리다이렉트 공격 1. ARP 리다이렉트 공격은 위조된 ARP 패킷을 보내어 희생자 시스템의 MAC 주소 테이블을 바꾸는 방식이기 때문에 먼저 희생자 시스템의 MAC 주소 테이블을 확인해야 합니다. arp -a 명령으로 공격 대상 시스템의 상태 정보를 확인합니다. 2. 희생자 PC로부터 패킷이 전달 되어 올 때 세션이 끊어지지 않게 패킷 릴레이를 위해 fragrouter를 실행합니다. fr..
데이터 링크 계층에서 스위치는 시스템 간 원활한 통신을 위해 주소 테이블을 생성하고 관리하는 역할을 합니다. 만일 스위치에 서버가 연결되어 있다면, 스위치 메모리에는 다음과 같은 정보가 기록되어 있을 것입니다. 1번 포트 2번 포트 서버의 MAC주소 3번 포트 4번 포트 여기에 클라이언트의 랜 케이블을 스위치의 3번 포트에 꽂으면, 스위치의 메모리 정보가 다음과 같이 바뀝니다. 1번 포트 2번 포트 서버의 MAC 주소 3번 포트 클라이언트의 MAC 주소 4번 포트 너무 당연하다고 생각할 수 있지만 스위치의 메모리에 포트별로 MAC 주소가 매칭된 테이블이 존재하고, 이것이 갱신된다는 사실은 아주 중요합니다. 이처럼 당연한 사실에도 불구하고 많은 사람들이 스위치의 메모리에 3계층 정보인 IP 주소와 MAC ..
Reverse Connection 오늘은 Reverse Connection에 대해 알아보도록 하겠습니다. 보통 공격자가 접근 할 때 외부망에서 내부망으로 접근을 하는 것이 일반적입니다다. 이와 같은(외부망->내부망) 접근에는 방화벽이 설치되어 있어 접근하는 것이 어려워지는데 이는 외부에서 내부로의 접근에 방화벽이 무척 민감하게 반응하기 때문입니다. 반면, 아웃바운드 트래픽 정책은 허술한 경우가 많습니다. Reverse Connection이란, 이러한 방화벽의 특성을 이용하여 공격자(외부망)가 희생자(내부망)에 접속하는 것이 아니라 희쟁자 시스템(내부망)에서 공격자 PC(외부망)로 거꾸로 접속을 하도록 만드는 것입니다.
일반 문자열 (CHAR, VARCHAR) 먼저 일반 문자열인 CHAR와 VARCHAR에 대해 알아보도록 하겠습니다. CHAR나 VARCHAR 앞에 'N'이 붙지 않은경우 일반 문자열입니다. 이 일반 문자열을 사용할 경우 데이터를 정의할 때, 바이트 수를 신경써주셔야 합니다. 일반적으로 영문 1바이트, 한글(유니코드)는 2바이트 입니다. CHAR => 고정 문자열 + 일반 문자열 EX) char(100)으로 지정하고, "abc"를 입력하면 항상 100byte의 영역을 확보합니다. (97바이트 낭비) VARCHAR => 가변문자열 + 일반 문자열 EX) varchar(100)으로 지정하고, "abc"를 입력하면 3byte의 영역을 확보합니다. (낭비 X) CHAR, VARCHAR의 경우 한글(2바이트) EX..