본문 바로가기

개발과제

[노말틱 모의 해킹 취업반 1주차 개발과제 (3)] GET/POST 데이터 전달하기

오늘은 간단하게 GET방식 POST 방식 알아보고

 

버프스위트(Burp Suite) 이용하여 데이터 전달 해보겠습니다!

 

우선 GET/POST 방식은 웹 브라우저에서 웹 서버에 데이터를 요청할 때 사용되는 방식입니다.

 

여긴 다른 세계라 컴퓨터 생명권 없어서 서버 컴퓨터 한 대만 있다고 합시다

 

-GET?-

GET 방식은 URL 주소 뒤에 '?'를 붙이고 변수명과 값 쌍을 '&'로 연결해서 요청합니다.

예를 들어 http://localhost/index.php?id=HappyHacking&pass=1234로 예를 들어 봅시다.

 

 

? 뒤에 id, pass는 변수 명입니다.

id에 HappyHacking 넣고

'&'는 AND 의미로 같이 처리하는 것을 의미합니다.

그러니 pass도 1234 넣고 데이터를 요청하게 됩니다!

 

 

참고로 변수(Key라고도 불리기도 합니다) 안에 넣을 값을 value라고 불립니다.

 

 

GET 방식의 단점이 있습니다.

데이터 양이 작고 URL을 이용해 요청을 할 수 있어서 간단하지만 보안 측면에서는 취약하답니다

 

결국 서버는 id상자 까고 pass 상자 까고..

 

-POST?-

 

POST 방식은 똑같이 데이터를 요청하는 것은 같습니다!

근데 URL에 붙여서 보내지 않고 BODY에다가 데이터를 넣어서 보냅니다.

정확히 말하자면 HTTP 요청의 Body에 담아서 전송하는 겁니다.

 

GET 보다 보안적 면에서 우수한 특징을 가지고 있다고 합니다.

그래서 주로 로그인, 회원가입, 데이터 등록 등에서 사용되고 있습니다.

 

 

 

둘 차이점은 버프스위트 통해 보겠습니다.

.

.

.

.

우선 버프스위트가 뭔지 간단하게 말하자면

 

매우매우 중요하다

 

이 버프스위트는 데이터 요청하는데 중간에 끼어서 관찰할 수 있는 기능이 있습니다.

이를 전문 용어로 웹 프락시라고 합니다.

 

중간에서 데이터를 막을 수도 있답니다

 

그래서 클라이언트가 만약 악성코드를 서버에 보내면

이 버프스위트를 통해 알아낼 수 있고 서버에 도착하기 전에 막아 낼 수 있죠.

그래서 저희 보안 전문가에게 매우 중요한 툴입니다!

 

직접 해봅시다.

우선 Burp Suite을 깔아봅시다.

 

먼저 https://portswigger.net/burp/releases/professional-community-2023-2-4

 

Professional / Community 2023.2.4

This release upgrades Burp's browser to Chromium 111.0.5563.110/.111 for Windows and 111.0.5563.110 for Mac and Linux. This upgrade contains several high-severity fixes.

portswigger.net

자신의 리눅스 들어가셔서 이 사이트로 들어가 다운로드합니다.

 

 

그리고 다운로드한 디렉터리로 이동하시고

실행을 하시기 전에 다운로드하신 거 실행 권한을 주고 하셔야 됩니다

#  chmod +x./[파일명]. sh

 

그냥 하시면 저렇게 권한 없다고 나옵니다. 많이 번거롭네요

그리고 설치 시작

#./[파일명]. sh

 

그리고 무지성 예스맨 되시면 됩니다

처음에 Next 누르시고 넘어가시면

 

설치경로가 나오고요. 나중에 그 설치경로에 uninstall 파일 이용해 삭제 가능합니다!

그리고 next하시고 또 Next 하시면 됩니다.

.

.

.

.

설치되셨으면 실행해 봅시다

 

저는 바로바로 실행 가능하게 실행 아이콘을 만들었습니다!

배경화면에 우클릭하시고 실행아이콘 만들기 하시고

 

이제 직장 때려치울 때까지의 친구입니다

Burp만 입력하시면 알아서 나옵니다.

만드시면 아이콘 나옵니다 그리고 실행

 

Next

 

Next

 

 

Next

그리고 Start Burp 하시면

 

쨘 참고로 메뉴바에 Proxy 누르시면 이 창이 나옵니다

 

 

이제 설치가 됐습니다.

 

본격적으로 과제를 시작합시다.

 

 

Proxy 란에 interecpt is on으로 바꿔주시고 open browser 누르시면

 

Intercept on는 중간에 데이터를 멈추게하고 훔쳐보겠다는 겁니다!(합법적으로)

 

그러면 이제 사이트가 나올 겁니다.

 

만약 apache2 안켜져있으면 키고 오셔야되요

당연히 apache2 키셔야 됩니다!

그리고 http://localhost/index.php 들어갑시다

 

그러면

 

이때 interrept is on 옆에 action 누르셔서 Send to Repeater 누릅시다.

.

.

그리고 Repeater 들어가 봅시다

그리고 왼쪽 위에 send 버튼 누르시면

 

 

Request: 밥 줘, Response:여기 밥

 

Request는 요청을 하는 것입니다 Response는 그에 대응한 응답을 하는 것입니다.

 

간단하게 index.php에 코딩을 다시 해봅시다.

 

Simple

php언어에 $_GET은 GET방식으로 받은 KEY을 까는 겁니다

그러니 $_GET ['id']는 GET방식으로 받은 id 상자를 깔 거야! 이런 뜻입니다.

 

저장하고 주소창에 http://localhost/index.php?id=HappyHacking&pass=1234 적어서 해봅시다

 

만약 이렇게 안나오시면 intercept를 껏다 다시 키고 브라우저도 다시 열어보세요

 

그리고 버프  스위트에 똑같이 Send to Reapter하시고

 

다시 send 하시면

 

잘 나오네요! Happy Hacking 행..복..

 

 

 

여기 자세히 보시면 Request 칸에 GET 보이시죠?

GET 방식으로 보내고 있다고 알려주는 겁니다!

그리고 다음 /index.php는 여기에 요청하는 것이고

HTTP/1.1은 버전입니다! 이 순서는 약속입니다 그러니 꼭 이 순서를 지켜야 됩니다.

 

그리고 남은 부분은 Body 부분이라고 불립니다!

.

.

.

이제 POST 방식으로 해봅시다

 

index.php에 $_GET을 $_POST으로 바꿉시다.

 

간단하게 비교하기 위해 출력 순서 pass,id로 했습니다

 

그리고 Request에 GET을 POST로 바꾸시고 URL에? 뒤에 있는 거 전부 지웁니다.

Request body parameters에 이름은 id 값은 HappyHacking, 이름은 pass 값은 1234로 넣고 해 봅시다

 

추가하시고 request 보시면은 

 

참 쉽네요!

 

 

 

 

이렇게 나옵니다 이제 Send 보내봅시다!

 

 

 

1234HappyHacking

이렇게 POST 방식으로 보내봤습니다.

 

차이점이 확연하게 보이시죠?

GET은 URL에 상자 담아서 보내는 방면

POST는 BODY에 담아서 보냅니다!

 

이렇게 과제를 마치겠습니다.

.

.

.

 

.

.

.

간단하게 오류 메시지도 공부해 보죠!

 

먼저 

Response에 보시면 먼저 HTTP/1.1은 HTTP의 버전을 뜻하고요

그 뒤에 숫자는 서버 상태(HTTP 상태 코드)를 말합니다!

 

-200?-

 

상태 굳

연결 상태가 좋은 겁니다!

 

-300?-

Redirect라는 뜻입니다.

쉽게 말하자면 A라는 파일을 찾고 싶은데 다른 곳에 있을 경우

서버 측에서 다른데 가보라고 300 오류 메시지를 보냅니다!

 

-400?-

클라이언트 측에 엉뚱한 걸 요청할 때 서버 측에서 이런 건 없어

라고 말하는 것입니다

 

Request: 티본스테이크 주세요 Response: 그런거 없어요

 

-500?-

 

이 오류는 서버 측 문제입니다 만약 서버가 닫혀있거나 서버가 맛이 가면

500대 오류가 나오게 됩니다

.

.

.

.

이제 글을 마치도록 하겠습니다.