쿠키 / 세션 / 세션ID
쿠키 : 웹 서버로 요청을 보낼 때 붙이는 포스트잇 (데이터쪼가리)
세션 : 서버에 저장되는 연결정보
세션ID : 세션이 누구꺼인지 식별하는 것
Proxy
Proxy는 사용자의 요청(request)을 받아 대신 인터넷이나 다른 서버에 전달하고, 그 응답(response)을 다시 사용자에게 반환하는 중개 서버입니다.
즉, 클라이언트(사용자)와 서버(목적지) 사이에 위치하여 트래픽을 대신 처리하는 역할을 합니다.
Burp suite 가이드
→ Web Proxy Tool
웹 서버로 오고 가는 요청(패킷)을 대신 전달해주는 친구
proxy listener
Loopback only : 내 컴퓨터에서만 버트수트를 사용할 수 있게 하는 것 (LOCAL 환경 구성)
All interface : 다른 컴퓨터에서 우리 컴퓨터로 연결하기 위함 (외부 컴퓨터에서도 버프스윗을 사용할 수 있다)
1. 우리 컴퓨터에서 버프스윗을 실행하고,
2. 다른 컴퓨터가 오는 프록시를 전달해서
3. 우리 컴퓨터에서 버프스윗을 실행하고 전달 한다
→ 모바일 앱 해킹 시 필요
버프스윗은 리스너라는 걸 열어둬야하고 → 리스너로 데이터를 보내는 것이다.
리스너로 데이터를 넣어야, 보내주고 응답받고 전달을 해준다 (프록시의 핵심)
어떻게 열어야 하는가?
이 후 브라우저 setting 에서 프록시를 수동설정하여 위와 일치 시킨다
원래는 브라우저 → 구글 서버 이렇게 보내야 하는데
설정을 통해 브라우저 → 프록시 → 구글 서버 이렇게 접속하는 걸로 바꾼 것
웹 프록시 툴을 사용하는 이유
중간에 거치게 만들음으로써 실제 우리가 사용하는 브라우저가 웹서버와 데이터를 주고 받을 때 어떤 패킷을 주고 받는지, 직접 하나 하나 다 볼 수 있다. (요청값, 응답값)
→ 중간에서 전달하기 때문에, 중간에서 데이터를 고칠 수도 있다.
모바일 앱 해킹 시,
내 핸드폰에 내가 해킹 할 앱을 설치
이 앱이 통신을 할 때 어떤 요청과 응답을 받는지 궁금한 상황
이것을 proxy를 이용하여 볼 수 있다.
내 핸드폰에서 → proxy 설정을 할 수 있다
다른 방법
Intercept → open browser 를 클릭하면 프록시 설정을 안해도 됨 (자동으로 세팅 되어 있는 브라우저가 켜진다)
특정에만 자동으로 잡게
- request intercepting rules
- response intercepting rules
- match and replace rules
- HTTP history
- burp 를 통과한 요청들이 쌓이는 곳
예를들어, 로그인과정을 분석하고 싶으면 정상적으로 로그인을 해보고
history를 하나하나 뜯어서 분석을 해보는 것
repeater 같은 요청을 여러번 보내고 싶을 떄 사용하는 것
리피터로 패킷이 넘어오면 여기서 send 를 누르면 데이터가 여러면 보내진다.
- decoder
직접 인코딩 또는 디코딩을 할 수 있다.
- comparer
엄청 긴 글자가 있어서 무언가 미세하게 달라진 것 같은데 어디가 달라진지 모를때
복사해서 붙여넣어서 비교를 할 수 있다.
words , bytes 로 비교 가능하다
sync views를 통해서 어디가 달라졌는지를 확인할 수 있다.
- Request
GET / 경로 / 프로토콜
헤더 : Host, Cache-Control, Accept, Cookie …
- Response
프로토콜 / 상태코드
상태코드
- 200 : OK
- 300 : Redirect (위치를 알려주는 코드) → Location 이라는 헤더가 같이 응답된다.
- 400 : Client error → 이용자 너가 잘못한거임 이라는 뜻
404 not found : 우리가 없는 자료를 요청했을 때 서버가 보내주는 것
- 500 : Server Error 웹 개발할 때
- 응답 헤더와 바디 사이는 띄어쓰기 한줄이 들어가야한다.
User-Agent 어떤 브라우저로 접속을 했는가를 알려줄때 사용
%3D → “ = “ (많이 보면 안다고함)
로그인을 하고 나서 들어가는 페이지를 만들 것임
*게시판 구현
- 게시판 글 작성 : insert (회원가입에서 사용함)
- 게시판 글 리스트 보기 : 지금 이 게시판에 어떤 게시글들이 있는지 보기 select → DB 데이터를 가져와서
- 게시판 글 내용 읽기 : select
- 게시판 글 수정: update : 마이페이지에서 정보 수정하는 기능 만든 것 처럼 하면 된다고 함
- 게시판 글 삭제 : delete
** 게시판 페이징 기능
게시판 글이 100개 있다고 해서 100개가 전부 보이지는 않는다
한 10개 정도 나오고, 페이지를 1번, 2번, 3번 페이지로 이동하는 것
select * from board limit 0, 10 기능을 통해서 구현 가능
limit [index], [count]
즉 0번부터 10개를 가져온다는 말
**게시글 검색 기능
게시글 제목을 검색
select * from board
where title = ‘test’
이거는 게시판 제목에 정확히 test 여야 출력이 가능함
→
select * from board
where title = like ‘%test%’
% 문법을 앞 뒤로 넣으면
test 라는 글자가 앞뒤로 들어간 모든 글을 가져올 수 있다.
** 게시글 정렬 기능
제목 가나다 순으로 정렬 하고 싶을 때, 작성자 별로 정렬, 조회수 별로 정렬, 날짜별로 정렬
select * from board
order by 라는 구문을 통해서 정렬을 할 수 있다.
order by [column 이름] [asc/desc]
오름차순, 내림차순
limit 은 mysql 에서 사용가능하고 oracle 에서는 사용하지 못한다
과제
[1] 오늘 수업 복습
- burp suite : CTF 문제 풀어보며 복습
[2] Javascript
- 문법 (수업 노트) 적혀져 있는 것만 공부
- Javascript.pdf
- 쿠키 탈취 코드 vs 키로거 둘 중 하나 만들어보기
- 자바스크립트 키로거 만들기
- 로그인 페이지를 간단하게 만들고 아이디랑 비밀번호 쓸 때 키보드 입력창을 공격자 서버로 보내주는 것
[3] 게시판 구현