Hacking_study 45

5주차_회원 게시판 글 쓰기, 목록 보기, 글 보기

개발 순서 회원 게시판 DB 테이블 구축 > 게시판 글쓰기 폼 개발 > 게시판 글 리스트 페이지 개발 > 게시판 글 보기 개발 1. 회원 게시판 DB 테이블 구축 게시글 분류를 위한 번호와, 사용자이름, 게시글 제목, 내용, 작성일자는 필수로 들어가야 한다. 거기다 나중에 파일 업로드 및 다운로드 기능을 추가하기 위해 파일에 관한 항목도 미리 컬럼에 추가했다. mysql> create table memberboard ( -> board_num int not null auto_increment, -> username varchar(20) not null, -> title varchar(100) not null, -> content text not null, -> wr_date char(20), -> fil..

XSS (stored xss / reflected xss / 대응 방안)

XSS (Cross-Site Scripting) 클라이언트 측 코드를 삽입하여 클라이언트의 브라우저에서 실행하는 공격. 가장 일반적으로 발생하는 보안 취약점 중 하나로, 쉽게 찾을 수 있는 편이다. 서버 사이드 코드 : 백엔드 측 코드로, 서버에서 실행되는 코드 클라이언트 사이드 코드 : 프론트엔드 측 코드로, 웹 브라우저에서 실행되는 코드. html, css, js로 이루어진 코드. xss 는 클라이언트를 공격하는 것이므로 서버엔 아무 영향이 가지 않는다. 즉, 서버 측 코드가 변하거나 서버의 데이터 변조 및 손실 될 일이 없다.. 따라서 web shell로 직접 이어질 가능성은 없다. 주로 자바스크립트 코드를 삽입하여 공격한다. xss에 필요한 자바스크립트의 기초적인 지식 1.변수 선언. const,..

6주차 수업 정리(SQLi 주의점 및 팁!)

sql injection 정리!! 1) sql injection 이란? 임의의 Sql 질의문을 삽입해 실행하는 공격. 2) 시나리오 sqli를 통해 인증을 우회하거나 데이터를 추출하거나 변조하거나 할 수 있다. 또는 web shell 올릴 수 있음(file upload 공격) 3) 대표적인 공격 유형 - UNION SQLi - Error based SQLi. 핵심은 논리에러 . 논리에러를 유발할 수 잇는 특정 함수(updatexml) 이용 - Blind sqli. 참, 거짓 조건을 이용해서 데이터 하나하나 추출 4) 대응방안 prepared statement 적용안되는 거 order by, 테이블, 컬럼 이름에는 화이트리스트 기반 필터링하기! 화이트리스트: 허한 애들만 들어오게 하는거. 블랙리스트: 금지..

Blind SQL injection 및 SQLi 대응방안

sql 질의문의 참과 거짓의 조건으로 데이터를 추출하는 기법. db 질의문이 화면에 출력되지 않는 곳을 포함해 sql injection 가능한 모든 곳에서 공격 가능하다. ※ 효율적으로 하기 위해 필요한 지식 및 문법 ▶ limit [어디에서부터], [몇 개] 예시) limit 0,1 : 첫번째 행의 1개 출력 limit 1,3 : 두번째 행의 3개 출력 ▶ substring((텍스트), [어디에서부터], [몇 글자]) 글자 자르는 것.. 예시) substring('test', 1, 1) : 'test' 문자열의 첫 번째 글자부터 한 글자만 출력. 즉, t. substring('test', 2, 3) = est ▶ ASCII : 문자들을 숫자코드로 변환해 놓은 것 ascii table 검색하면 잘 나옴...

Error based SQL injection

DB 에러문이 출력되는 경우, 이를 이용하여 SQL injection 공격을 할 수 있다. 공격 순서는 다음과 같다. step 1. 공격 서버의 쿼리문 추리 select ???? from ???? where ???? 정도 추리할 수 있다고 하자. step 2. DB 에러인지 확인 출력되는 에러문이 DB 에러문인지 확인 step 3. error based SQL Injection function 이용해서 공격 실행 문법을 맞게 써서, 문법 에러가 아닌 논리에러가 나게 해야한다. error based sqli 에 자주 쓰이는 함수들 중 updatexml 을 이용한 다음 구문을 입력해보자. 1' and updatexml(null,concat(0x3a,(select 'hello')),null) and '1'='..

4주차_(2) 주소 검색 기능 구현

개요 ▶ MySQL 데이터베이스 작업 회원 정보 테이블에 주소 컬럼 추가 우체국에서 도로명주소 파일 다운 도로명주소 데이터 들어갈 db, 테이블 생성 주소 파일들 해당 db로 업로드 ▶ 회원 가입 기능에 주소 검색 로직 추가 회원 가입 폼에 주소 입력칸 추가 주소 입력칸 클릭 시 주소 입력 폼 페이지 팝업으로 띄우기 주소 입력 폼에서 입력값 전달받아 주소 검색을 처리할 php페이지 만들기 상세 주소 입력칸 만들고, 전체 주소를 원래 페이지에 출력하게 하기 회원 가입 기능에 주소 검색 로직 추가하기 1. 회원가입 페이지에 주소 입력 칸 추가 cs 2. 주소 입력 페이지 팝업 띄우기 회원가입 페이지에 다음과 같은 함수를 정의한 후, function openAddressPopup() { var url = "a..

4주차_(1) 주소 검색 기능 구현

개요 ▶ MySQL 데이터베이스 작업 회원 정보 테이블에 주소 컬럼 추가 우체국에서 도로명주소 파일 다운 도로명주소 데이터 들어갈 db, 테이블 생성 주소 파일들 해당 db로 업로드 ▶ 회원 가입 기능에 주소 검색 로직 추가 회원 가입 폼에 주소 입력칸 추가 주소 입력칸 클릭 시 주소 입력 폼 페이지 팝업으로 띄우기 주소 입력 폼에서 입력값 전달받아 주소 검색을 처리할 php페이지 만들기 상세 주소 입력칸 만들고, 전체 주소를 원래 페이지에 출력하게 하기 MySQL 데이터베이스 작업 1. 회원 정보 db에 address 컬럼을 추가했다. 2. 우정사업본부 홈페이지에서 아래의 순서로 접속해서 주소파일을 다운로드한다. 메인화면 > 정보공개 > 우정데이터 제공센터 > 우편데이터 제공 목록 > 우편번호DB > ..