Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

업데이트가 잘 안돼서 병합 #4583

Closed
wants to merge 25 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion Gemfile
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
source "https://rubygems.org"
gemspec
gemspecs

gem "webrick", "~> 1.8"
gem "minimal-mistakes-jekyll"
28 changes: 15 additions & 13 deletions _config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,22 @@

# theme : "minimal-mistakes-jekyll"
# remote_theme : "mmistakes/minimal-mistakes"
minimal_mistakes_skin : "default" # "air", "aqua", "contrast", "dark", "dirt", "neon", "mint", "plum", "sunrise"
minimal_mistakes_skin : "dark" # "air", "aqua", "contrast", "dark", "dirt", "neon", "mint", "plum", "sunrise"

# Site Settings
locale : "en-US"
title : "Site Title"
title_separator : "-"
subtitle : # site tagline that appears below site title in masthead
name : "Your Name"
description : "An amazing website."
url : # the base hostname & protocol for your site e.g. "https://mmistakes.github.io"
locale : "ko-KR"
title : "Mimung Blog"
title_separator : "|"
subtitle : When nothing is going right, go left.
name : "jung"
description : "preliminary penetration tester"
url : "https://mimung.github.io"
baseurl : # the subpath of your site, e.g. "/blog"
repository : # GitHub username/repo-name e.g. "mmistakes/minimal-mistakes"
teaser : # path of fallback teaser image, e.g. "/assets/images/500x300.png"
logo : # path of logo image to display in the masthead, e.g. "/assets/images/88x88.png"
masthead_title : # overrides the website title displayed in the masthead, use " " for no title
# breadcrumbs : false # true, false (default)
breadcrumbs : true # true, false (default)
words_per_minute : 200
comments:
provider : # false (default), "disqus", "discourse", "facebook", "staticman", "staticman_v2", "utterances", "giscus", "custom"
Expand Down Expand Up @@ -104,10 +104,10 @@ analytics:

# Site Author
author:
name : "Your Name"
avatar : # path of avatar image, e.g. "/assets/images/bio-photo.jpg"
bio : "I am an **amazing** person."
location : "Somewhere"
name : "Jung"
avatar : "/assets/blog1.jpg"
bio : "meuw"
location : "South Korea"
email :
links:
- label: "Email"
Expand Down Expand Up @@ -290,3 +290,5 @@ defaults:
comments: # true
share: true
related: true
show date: true
date_format: "%Y-%m-%d"
20 changes: 20 additions & 0 deletions _posts/2023-11-14-GET, POST method.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
![이미지](/assets/blog1.jpg)

## 들어가기에 앞서

## HTTP 프로토콜이란
- 웹에서 데이터를 주고받기 위한 표준 프로토콜(규칙) 중 하나
- 클라이언트-서버 모델을 기반으로 한다. 클라이언트를 요청, 서버는 응답
- HTTP 요청은 다양한 method를 사용하는데 대표적으로 GET(리소스 조회), POST(리소스 생성), PUT(리소스 갱신), DELETE(리소스 삭제) 등이 존재

## GET method와 POST method의 공통점
- 클라이언트에서 서버로 데이터를 보내는 목적으로 사용
- 모두 URL을 사용하여 요청대상을 식별

## GET method와 POST method의 차이점
### GET method
- 데이터는 URL의 쿼리 문자열에 포함되어 전송
ex 나무위키에 *normaltic*을 검색
![이미지](/assets/GET_method_normaltic.png)
##### https://namu.wiki/w/Normaltic%20Place?from=%EB%85%B8%EB%A7%90%ED%8B%B1
##### 여기서 "https://namu.wiki/w/Normaltic%20Place"는 리소스 경로이고 '?' 이후의 부분이 쿼리 문자열입니다.
151 changes: 151 additions & 0 deletions _posts/2023-11-14-Login Page.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
![이미지](/assets/blog1.jpg)

## 로그인 페이지 만들기

먼저 부트스트랩 탬플릿을 준비하겠습니다.

*부트스트랩* [Link] (https://getbootstrap.com/docs/5.3/getting-started/introduction/) .

```html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bootstrap demo</title>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</head>
<body>
<h1>Hello, world!</h1>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
</body>
</html>
```

로그인 페이지에는 username을 넣을 수 있는 박스와 password 를 넣을 수 있는 박스가 필요합니다.

*Forms*에 있는 *input group*에서 찾겠습니다.
![이미지](/assets/부트스트랩_username.png)

해당 코드를 붙여넣기 해줍니다.
```html
<div class="input-group flex-nowrap">
<span class="input-group-text" id="addon-wrapping">@</span>
<input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="addon-wrapping">
</div>
```

```html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bootstrap demo</title>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</head>
<body>
<h1>Hello, world!</h1>
<div class="input-group flex-nowrap">
<span class="input-group-text" id="addon-wrapping">@</span>
<input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="addon-wrapping">
</div>
<div class="input-group flex-nowrap">
<span class="input-group-text" id="addon-wrapping">@</span>
<input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="addon-wrapping">
</div>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
</body>
</html>
```

username 박스가 2개가 있으므로 아래 박스를 password로 수정하겠습니다.
```html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bootstrap demo</title>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</head>
<body>
<h1>Hello, world!</h1>
<div class="input-group flex-nowrap">
<span class="input-group-text" id="addon-wrapping">@</span>
<input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="addon-wrapping">
</div>
<div class="input-group flex-nowrap">
<span class="input-group-text" id="addon-wrapping">@</span>
<input type="password" class="form-control" placeholder="Password" aria-label="Password" aria-describedby="addon-wrapping">
</div>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
</body>
</html>
```

버튼을 만들어야 합니다.
버튼을 만들기 위해 *Components*에 있는 *Buttons*에서 찾아보겠습니다.

그런데 찾다보니 *Forms*에 있는 *Overview*에 더 좋은게 있습니다. ![이미지](/assets/better.png)

두 박스를 지운 뒤 이걸 쓰고 수정을 하도록 하겠습니다.

``` html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bootstrap demo</title>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</head>
<body>
<h1>Login Page</h1>
<form action="login_test.php" method="post">
<div class="mb-3">
<label for="username" class="form-label">Username</label>
<input type="text" class="form-control" id="username" name="username" aria-describedby="usernameHelp">
</div>
<div class="mb-3">
<label for="password" class="form-label">Password</label>
<input type="password" class="form-control" id="password" name="password">
<div id="passwordHelp" class="form-text">Do not share your password with anyone else.</div>
</div>
<div class="mb-3 form-check">
<input type="checkbox" class="form-check-input" id="exampleCheck1">
<label class="form-check-label" for="exampleCheck1">Check me out</label>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
</body>
</html>
```

로그인 페이지를 완성했습니다.

username : admin
password : password
만 작동하도록 간단한 php코드를 만들겠습니다.

```php
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$username = $_POST['username'];
$password = $_POST['password'];

if ($username == 'admin' && $password == 'password') {
echo "로그인 성공!";
} else {
echo "로그인 실패!";
}
}
?>
```

로그인 화면입니다.![이미지](/assets/login_test_html.png)

username에 admin 그리고 password에 password를 넣어보겠습니다.![이미지](/assets/login_test_html2.png)

잘 작동합니다.![이미지](/assets/login_test_php.png)
6 changes: 6 additions & 0 deletions _posts/2023-11-14-첫번째 블로그.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# 마크다운으로 블로그를 작성합니다!
- *볼드체*

## 안녕하세요!

이것은 저의 이미지 입니다. ![이미지](/assets/blog1.jpg)
26 changes: 26 additions & 0 deletions _posts/2023-11-17-Burp Suite Prac 1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<span style="font-size: 18px;">**Burp Suite를 이용해 Segfault 워게임을 풀어보겠습니다.**</span>

<span style="font-size: 18px;">**Burp Suite prac 1**</span>
![이미지](/assets/burpsuite_prac1.png)

<span style="font-size: 18px;">링크를 클릭해 들어가 보겠습니다.</span>
![이미지](/assets/no_date.png)

<span style="font-size: 18px;">정보가 없으므로 소스코드를 통해 확인해보겠습니다.</span>
![이미지](/assets/sourcecode1.png)

<span style="background-color:#fff5b1; font-size: 18px;">"header User-Agent에 segfaultDevice 라고 넣어서 보내보세요!" 라는 주석이 달려있습니다.</span>

<span style="background-color:#fff5b1; font-size: 18px;">Burp Suite로 링크를 다시 열어 Intercept를 하겠습니다.</span>
![이미지](/assets/intercept_prac1.png)

<span style="background-color:#fff5b1; font-size: 18px;">User-Agent헤더에 segfaultDevice를 넣어서 Forward 시키겠습니다.</span>
![이미지](/assets/prac1_result.png)

<span style="background-color:#fff5b1; font-size: 18px;">아까와는 다른 페이지가 나왔습니다.</span>

<span style="font-size: 18px;">소스코드를 확인해보겠습니다.</span>
![이미지](/assets/sourcecode2.png)

<span style="font-size: 18px;">Flag를 얻었습니다.</span>

26 changes: 26 additions & 0 deletions _posts/2023-11-17-Burp Suite Prac2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<span style="font-size: 18px;">**Burp Suite를 이용해 Segfault 워게임을 풀어보겠습니다.**</span>

<span style="font-size: 18px;">**Burp Suite prac 2**</span>
![이미지](/assets/burpsuite_prac2.png)

<span style="font-size: 18px;">링크에 들어가보겠습니다.</span>
![이미지](/assets/look_inside.png)

<span style="font-size: 18px;">Look inside 정보가 있습니다.</span>
<span style="font-size: 18px;">소스코드를 확인해보겠습니다.</span>
![이미지](/assets/sourcecode3.png)

<span style="font-size: 18px;">한글이 꺠져있으므로 텍스트 인코딩을 복구해주겠습니다.</span>
![이미지](/assets/sourcecode4.png)

<span style="font-size: 18px;">먼저 a.html 문서를 확인하겠습니다.</span>
![이미지](/assets/a.html.png)

<span style="font-size: 18px;">별 소득이 없으므로 이번엔 b.html 문서를 확인하겠습니다.</span>
![이미지](/assets/b.html.png)

<span style="font-size: 18px;">a.html 문서와 비슷해보입니다.</span>
<span style="font-size: 18px;">a.html 문서와 b.html 문서를 comparer로 비교해보겠습니다. </span>
![이미지](/assets/comparer.png)

<span style="font-size: 18px;">두 문서 사이에 flag가 숨겨져 있었습니다.</span>
22 changes: 22 additions & 0 deletions _posts/2023-11-20-식별, 인증, 인가.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
![이미지](/assets/blog1.jpg)

## 식별(Identification)
- 사용자가 시스템에 아이디, 비밀번호와 같은 식별정보를 제출하여 시스템이 사용자를 인식하게 하는 것
- 이떄 식별 정보는 누군가가 봐도 상관없는 정보, 중복될 수 없도록 만들어진 값

## 인증(Authentication)
- 시스템이 사용자가 제공한 식별정보를 통해 사용자가 실제 그 사용자임을 확인하는 것

## 인가(Authorization)
- 사용자가 사용자의 권한으로 어떠한 행위를 하려고 할 떄 서버는 사용자의 권한을 확인하고 권한을 부여해주는 것

#### 예시

#### 식별(Identification)
- 사용자가 로그인을 하기 위해 서버에 아이디와 비밀번호를 제출

#### 인증(Authentication)
- 서버가 제출된 아이디, 비밀번호를 DB에 저장되어 있는 아이디, 비밀번호와 일치하는 지 확인

#### 인가(Authorization)
- 로그인 이후 사용자가 사용자 이름으로 메일을 보내려 할 떄 서버가 사용자의 권한을 확인하고 사용자에게 메일을 보낼 권한을 부여
31 changes: 31 additions & 0 deletions _posts/2023-11-20-쿠키, 세션, 세션ID, 캐시.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
![이미지](/assets/blog1.jpg)

## 쿠키(Cookie)
- 서버에 요청을 보낼 떄 사용자의 정보를 보내는 매개체이자 클라이언트가 가지고 있는 임의의 정보파일

### 예시
1. 웹사이트 바탕화면의 색상을 설정하고 이러한 정보를 쿠키에 저장
2. 이후 웹사이트를 실행(요청)할 떄 쿠키가 요청과 함께 서버로 전송됨
3. 서버는 쿠키에 있는 정보를 읽고 설정한 색상의 웹사이트를 제공

## 세션
- 사용자에 대한 정보를 임시로 서버가 DB에 보관하는 방법

## 세션ID
- 사용자에 의해 DB에 보관된 사용자의 정보가 요청되었을 떄 해당 정보의 사용자가 같은 사용자인지 확인하기 위해 서버가 만든 key

### 예시
1. 사용자가 로그인을 할 떄 서버는 식별정보를 인증하고 세션DB에 사용자(user)를 생성
2. 세션 DB에서 만들어진 사용자 세션의 별도 ID를 서버에 보내고 서버는 이것(세션ID)를 쿠키에 담아 브라우저(사용자)에게 보냄
3. 로그인 이후 사용자가 블로그를 운영하기 위해 본인의 블로그를 서버에 요청
4. 서버에 데이터를 요청할 떄 쿠키도 같이 보냄
5. 서버는 쿠키에 담긴 세션ID를 이용해 세션DB에서 사용자를 찾고 로그인한 사용자 임을 확인하고 권한 부여
6. 사용자는 본인의 블로그를 확인

## 캐시
- 사용자가 데이터를 요청한 이후 또다시 요청했을 떄 소모되는 자원 없이 데이터를 가져올 수 있도록 데이터를 저장해둔 임시장소

### 예시
1. 웹툰 1화를 본 이후 2화를 요청
2. 2화를 보다가 1화를 다시 보기 위해 뒤로가기 요청
4. 캐시에 저장된 데이터에서 1화를 가져옴
27 changes: 27 additions & 0 deletions _posts/2023-11-28-Web Server,WAS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
![이미지](/assets/blog1.jpg)

## Web Server
- 브라우저의 http 요청을 받아서 jpg, html과 같은 정적페이지를 브라우저에 제공하는 서버

#### 정적페이지란
- 요청인자(request parameter)값에 따라 결과값이 바뀌지 않는 페이지
- 어느 사용자의 요청이든 항상 동일한 컨텐츠

##### 요청인자란
-클라이언트가 서버에 요청하는 정보

## WAS(Web Application Server)
- 브라우저의 http요청을 받아서 php와 같은 동적페이지를 브라우저에 제공하는 서버

##### 동적페이지란
- 요청인자(request parameter)값에 따라 결과값에 바뀌는 페이지
- 각 사용자의 요청에 따라 변화할 수 있는 컨텐츠

#### WAS 구조
![이미지](/assets/was_structure.jpg)
- Web Server는 브라우저의 요청을 container에 전달, container의 결과값을 client에 전달
- Web Container는 client의 요청을 처리하고 결과값을 web Server에 반환
- WAS는 정적페이지인 Web Server가 있어서 사실 WAS만으로 정적페이지와 동적페이지를 모두 브라우저에 제공할 수 있다.

##### WAS와 Web Server를 모두 사용하는 이유
- 정적페이지는 Web Server가 처리하고 동적페이지는 WAS가 처리함으로써 책임분할을 통한 서버부하 방지
Binary file added assets/GET_method_normaltic.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/a.html.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/b.html.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/better.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/blog1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/burpsuite_prac1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/burpsuite_prac2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/comparer.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/intercept_prac1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/login_test_get.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/login_test_html.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/login_test_html2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/login_test_php.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/look_inside.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/no_date.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/prac1_result.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sourcecode1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sourcecode2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sourcecode3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sourcecode4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/was_structure.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/부트스트랩_username.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading