- ๊ฐ๋ฏผ๋ฒ
- ์ค์์ฐฌ
- ์ด์ฃผ์ฐฝ (ํ์ฅ : 010-6478-0124 )
- ํ์ข ์
- ๋ณด์์ ๋ํด์ ๊ด์ฌ๊ณผ ํฅ๋ฏธ๋ฅผ ๊ฐ์ง๋๋ก ํจ.
- ์๊ธฐ ์ฃผ๋์ ํ์ต๊ณผ ๋ฌธ์ ํด๊ฒฐ๋ฅ๋ ฅ ํจ์.
- ๋ฌผ์ด๋ณด๋ ๊ฒ์ ๋ถ๋๋ฌ์ํ์ง ์๊ฒ ํจ.
- ์ฝ๋ฉ๊ณผ ํดํน์ ๊ฐ์ด ๋ฐฐ์์ผ๋ก์จ ์ฝ๋ฉ ์ค๋ ฅ๋ ๊ธฐ๋ฅด๋ฉฐ ํดํน๋ ๊ฒฝํ.
- ํด์ปค๋ฅผ ์ง๋งํ๋ ํ์๋ค์๊ฒ ๊ฟ์ ํฅํด ํ ๊ฑธ์ ๋ค๊ฐ๊ฐ ์ ์๋๋ก ๋์.
ย | ย |
---|---|
ํ๊ฒ | ์ค2 ~ ๊ณ 3 |
๋์ด๋ | โ โ โ โ โ |
์ฐจ์ | 12์ฐจ์ |
์์์๊ฐ | 3์๊ฐ |
์ฅ์ | ์์ |
๊ต์ก๊ธฐ์์ฌ | ๋ ธํธ๋ถ ๋๋ PC |
์ฐจ์ | ํ์ค์๊ฐ |
---|---|
1 | ์์ด์ค ๋ธ๋ ์ดํน ์๊ฐ |
2 | HTTP ํต์ ์๊ฐ |
3 | HTML ํ๊ทธ ์ตํ๊ธฐ |
4 | DB๋? |
5 | Mysql ๊ตฌ๋ฌธ, ์๋ฆฌ ์ตํ๊ธฐ |
6 | ์๋ฒ๋? |
7 | PHP ์ฟ ํค ๋ก๊ทธ์ธ |
8 | JS๋? |
9 | JS๋ก ์นํ์ด์ง ๋ง๋ค๊ธฐ |
10 | XSS |
11 | SQL Injection |
12 | ์์ฒด CTF ์งํ |
- ๊ฐ์ฌ์๊ฐ (์ค์์ฐฌ , ํ์ข ์ , ์ด์ฃผ์ฐฝ , ๊ฐ๋ฏผ๋ฒ)
- ํดํน ๋ถ์ผ ์๊ฐ(๋ฆฌ๋ฒ์ฑ , ํฌ๋๋ธ , ํฌ๋ ์ , ์นํดํน)๋ฐ ์์ฐ
- ํ์๋ค ์๊ธฐ์๊ฐ
- ๊ฐ๋จํ ํด์ฆ ๋ฐ ๊ฒ์ ์งํ(์์ด์ค ๋ธ๋ ์ดํน)
- ๊ฐ์ฌ ํ ๋ช ๋น 2~3 ๋ช ์ ํ์์ ๋ด๋น
- ํดํน ๊ด๋ จ ์ด์ (๋น์ธ ํดํน ์ฌ๊ฑด , intel AMT ๊ด๋ จ ๋ณด์ ๋ฌธ์ ๋ฑ)
- ์ ์ฑ์ฝ๋ , ๋ฐ์ด๋ฌ์ค , ๋์ฌ์จ์ด ๋ฑ์ ๊ดํ ๋ด์ค ์ค๋ช
- ์ด๋๋๋จธ์ค, ์กฐ์ง ํธ์ธ ๋ฑ ํดํน ๊ด๋ จ ๋จ์ฒด ๋ฐ ์ธ๋ฌผ, ์ผํ ์๊ฐ
- ํ๋ก ํธ ์๋, ๋ฐฑ์๋
- ์๋ฒ์ ํด๋ผ์ด์ธํธ
- ์ค์ ์ฌ์ดํธ(๋ค์ด๋ฒ & ํ์ด์ค๋ถ ๋ฑ)๋ฅผ ์๋ก ๋ค์ด ์ค๋ช
- ์ค์ ์ฌ์ดํธ์ ์ฃผ๋ก ์ฌ์ฉ๋๋ ์ค๋ฐ๊ฟ ํ๊ทธ, ์ด๋ฏธ์ง ์ฝ์ ํ๊ทธ, ๋งํฌ ์ฝ์ ํ๊ทธ ๋ฑ์ ์ค๋ช
- ๊ธฐ์กด ์ฌ์ดํธ(๋ค์ด๋ฒ & ํ์ด์ค๋ถ ๋ฑ)์ HTML ์ฝ๋๋ฅผ ์์ ํ์ฌ ์์ ์ ๊ฒ์ผ๋ก ๋ง๋ค์ด๋ณด๊ณ , ์ค์๊ฐ ๊ฒ์์ด ๋ฐ๊ฟ๋ณด๊ธฐ
- 2์ฐจ์์ ๋ฐฐ์ ๋ ํ๊ทธ ๋ฐ ์ํ์ ํ๊ทธ, ํ ์ฝ์ ํ๊ทธ, ๋ฐฐ๊ฒฝ์ฌ์ง ์ฒจ๋ถ ํ๊ทธ
- ๋ฐฐ๊ฒฝ์ ์ง์ ํด์ฃผ๊ธฐ, transition ํ๊ทธ๋ฐ ๋์ ์ฌ์ดํธ ์ ์์ ํ์ํ ํ๊ทธ ๋ฐฐ์๋ณด๊ธฐ
- ๋จ ์ฐ๋ฆฌ๊ฐ ์ ์ํ ์กฐ๊ฑด(ํ ์ฝ์ , ๋ฐฐ๊ฒฝํ๋ฉด ์ฝ์ , ๋ฉ๋ด๋ฐ ์์ฑ, ์ฌ์ง ์ฝ์ ๋ฑ)์ ๋ถํฉํ๋ ์ฌ์ดํธ ๋ง๋ค๊ธฐ
-
DB์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ๊ณผ ์ฌ์ฉ ์
- ๋ฐ์ดํฐ์ ๋ํ ์ค๋ช ์ ํ๊ณ , ๋ฐ์ดํฐ์ ์งํฉ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ผ๋ ๊ฒ์ ์๋ ค์ค
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํน์ง(์ค์๊ฐ ์ ๊ทผ, ์ค๋ณต X ๋ฑ) ์ง๋ฃจํ๋๊น ์งง๊ณ ๊ฐ๋จํ๊ฒ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฌ์ฉ ์์(์ ํ๋ฒํธ๋ถ, ๊ธฐ์ ), ์ธ์์ ๋ชปํ์ง๋ง ์์ฒญ๋๊ฒ ๋ง์ด ์ฌ์ฉ๋๊ณ ์์(ํ์์ฑ)
- DBMS์ ๊ฐ๋ - ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ด๋ฆฌํ๋ ์์คํ
-
MySQL ์๊ฐ(์ค์น๋ ๋์ด ์์)
- ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ DBMS๋ผ๋ ๊ฒ์ ์๋ ค์ฃผ๊ณ , ๊ฐ๋จํ MySQL ์ค๋ช
- Bitnami ์คํ
-
MySQL DB, TABLE ๋ง๋ค๊ธฐ
- DB, TABLE ๊ฐ๋ ์ ๊ทธ๋ฆผ(ํ๊ณผ ์ด๋ก ์ด๋ฃจ์ด์ง ํ)์ผ๋ก ์ค๋ช ํ๊ณ ๊ฐ์ฌ๊ฐ ์๋ก์ด DB ํ๋ ๊ทธ๋ ค๋ณด๊ธฐ(์ด๋ฐ DB์๋ ์ด๋ค ๋ด์ฉ์ด ๋ค์ด๊ฐ์ผ ๋ ๊น์? ๋ฌผ์ด๋ณด๋ ํ์์ผ๋ก ์งํ)
- ๊ฐ์ฌ๊ฐ ํ๋๋ก ๊ฐ์ ๋ง๋ค๊ณ ์ถ์ DB ์๊ฐํ๊ณ , ๊ทธ DB์ ๋ค์ด๊ฐ ์์ฑ ๋ ์ฌ๋ฆฌ๊ธฐ(์ด ๋ INT, CHAR, DATE ๋ฑ ์์ฑ ์ค๋ช ํ๊ธฐ)
- ๊ฐ์ ์ค๊ณํ DB๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ๊ทธ๋ฆฌ๊ณ , ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ง๋ค๊ณ ๋ณด๊ธฐ(CREATE, SHOW, DESC)
- ๋ช ๋ น์ด๋ ๋์๋ฌธ์ ๊ตฌ๋ถ์์
-
์ด์ ์๊ฐ์ ๋ฐฐ์ด DB, TABLE ๋ง๋ค๊ธฐ ๊ฐ๋จํ๊ฒ ๋ณต์ต
-
์ด์ ์๊ฐ์ ๋ง๋ DB์ ๋ฐ์ดํฐ ์ฝ์ ํ๊ณ ํ์ธํ๊ธฐ(INSERT, SELECT)
- ; ์ฐ๊ธฐ ์ ๊น์ง๋ ๋ช ๋ น์ด ์๋๋๋ ๋๋ฌด ๊ธธ์ด์ง๋ฉด ๋ณด๊ธฐ ํธํ๊ฒ enter ๋๋ฅด์ธ์
- ํ ๋๋ฒ ๊ฐ์ดํด๋ณด๊ณ ๊ฐ์ ๋ฐ์ดํฐ ์ญ์ญ ๋ฃ์ด๋ณด๊ธฐ(๋ง์ผ๋ฉด ์ข์, ๋ค์์ ๋๋ฝํ ์๊ฐ)
-
์ด๋ฒ์๋ ๋ฐ์ดํฐ ์ญ์ ํด๋ณด๊ธฐ(DELETE)
- ๋ฌธ์ ๊ฐ ๋ฐ์! ์ญ์ ํ๋๊น ๋ค ์ญ์ ๋จ
- WHERE์ ํ์์ฑ์ ๋ชธ์ ๋๋
-
WHERE ์ค๋ช
- ํ์์ฑ ์ค๋ช ํ๊ธฐ(๋ฐ์ดํฐ๋ฅผ ์๋ชป์ฝ์ ํ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ๊ฐ ๋๋ฌด ๋ง์ผ๋ฉด ์ํ๋ ๋ฐ์ดํฐ ๋ณด๊ธฐ ๋ณด๊ธฐ ํ๋ค์)
- =, <, >, ์ฐ์ฐ์ ์ค๋ช
- WHERE๋ฅผ ์ฌ์ฉํ์ฌ ์กฐ๊ฑด์ ๋ง๋๋ ๋ฌธ์ ๋ฅผ ๋ช๊ฐ ๋ด์ค? ex.) ๊ฐ๊ฒฉ์ด 1000์ด์์ธ ๋ฐ์ดํฐ๋ง ๋ฝ์๋ณด์ธ์
- ์กฐ๊ฑด์ด '๋๋', '๊ทธ๋ฆฌ๊ณ '๋ก ์ฐ๊ฒฐ๋์ด ์๋ ๋ฌธ์ ๊ฐ ๋์ด
- ๊ทธ๋ฆฌ๊ณ AND, OR, NOT ์ค๋ช ํ๊ธฐ
- AND, OR, NOT ์ฌ์ฉํด๋ณด๊ธฐ
-
์๋ฒ์ ํด๋ผ์ด์ธํธ, ๋ฐฑ์๋ ๊ฐ๋ ๋ณต์ตํ๊ธฐ(2์ฐจ์์ ์์)
-
PHP์ ํ์์ฑ์ ๋ํ ์ค๋ช
- ์ ๋ฒ์ SELECT์ WHERE๋ก ๋ฐ์ดํฐ ๋ฝ์์จ๊ฒ์ ์ฝ๊ฒ ์นํ์ด์ง์ ๋์ธ ์ ์์
- ์น๋ฌธ์ ํ๋ํ๋ ์ฐพ์๊ฐ๋ฉด์ ๋ด์ฉ ์์ ์ํด๋ ๋จ
- ๋ฐ๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ์ด๋ผ๋ ๊ฒ์ด ์์
-
echo๋ฅผ ์ฌ์ฉํด์ ์๋ฌด๊ฑฐ๋ ์ถ๋ ฅํด๋ณด๊ธฐ
- ๋ฌธ์์ด์ ๋ฐ์ดํ๋ก ๊ฐ์ธ์ผ๋จ
-
PHP์ ์ฌ์ฉ๋ ๋ณ์์ ์ฐ์ฐ์ ์ค๋ช
- ๋ณ์๋ ์์ &๊ฐ ๋ถ์ + ๋ณ์ ์์ฑ ๊ท์น(๋์๋ฌธ์ ๊ตฌ๋ถ ๋ฑ)
- ์ฐ์ฐ์ +, -, *, % ๋ฑ ์ค๋ช ํ๊ธฐ
-
๋ณ์๋ผ๋ฆฌ ์ฌ์น์ฐ์ฐ์ ํด์ ์ถ๋ ฅํด๋ณด๊ธฐ
- ์ฟ ํค์ ๊ฐ๋ ์ ์๋ ค์ค
- ๋ก๊ทธ์ธ ์๋ฆฌ ์๋ ค์ค
- ์ฟ ํค ๋ก๊ทธ์ธ ๊ตฌํ
- ๋ก๊ทธ์ธ์ ๊ตฌํํ๋ฉด์ ๋๋ต์ ์ผ๋ก ์๊ณ ์์ ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฐ๋ณต๋ฌธ์ ๋ํ ๊ฐ๋ ํ์คํ ํจ.
- HTTP ์์์์ ์ธ์ ์ ๊ฐ๋ ์๋ ค์ค.
- ์ธ์ ๋ก๊ทธ์ธ ๊ตฌํ
- ์ธ์ ํ์ทจ๋ฅผ ์ด์ฉํ ๊ณ์ ๋ณ๊ฒฝ ์์ฐ์ ์ด์ฉํด ์ธ์ ์ ์ค์์ฑ๊ณผ ์๋ฆฌ๋ฅผ ๋ค์ ๋ฐฐ์.
- ์๊ฐ์ด ์ฌ์ ๋กญ๋ค๋ฉด ์งํํ ์์ .
- mysqli* ํจ์๋ฅผ ์ด์ฉํด์ ์์ (PDO, mysql ๊ฐ์ฒด๋ ๊ฐ์ฒด ์งํฅ์ ๊ฐ๋ ์ด ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ ํจ์๋ก ๋์ฒด)
- ์์ ๊ณผ์ ์์ ๋ง๋ ๋ก๊ทธ์ธ ์ฝ๋์ ์ฝ๊ฐ์ ์ฝ๋๋ฅผ ๋ํ์ฌ ์์ฑ
- Javascript์ ๊ฐ๋
๋ฐ ์ฌ์ฉ๋๋ ์ด์
- Naver, Facebook ๋ฑ ์ ๋ช ํ ์ฌ์ดํธ์ Javascript์ ์์ค ์ฝ๋๋ฅผ ๋ณด์ฌ์ฃผ๋ฉฐ, Browser ์์์(Client Side์์) ์ ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ง์ด ์ฌ์ฉํ๋ค๊ณ ์ค๋ช ํ ์์ ์
- Javascript์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ
- Chrome ๋ฑ์ Browser ์์ ๋ด์ฅ๋ Javascript Console๋ก ์์ ์งํ (IE๋ ๋ถํธํ๊ธฐ ๋๋ฌธ์ ์์ ์์ ๋ฐฐ์ ํ ๊ณํ์)
- DOM (Document Object Model)์ ๋ํด์ ์ค๋ช
.
- document.cookie
- document.domain
- document.getElementById()
- etc.
- Location ๊ฐ์ฒด์ ๋ํด ์ค๋ช
- location.href (์ด๊ฒ์ ํตํด Cookie ๋ฐ Session ๊ฐ์ ๋นผ์๊ธฐ ๋๋ฌธ์.)
- ์น ํ์ด์ง์์ ๋ง์ด ์ฌ์ฉํ๋ ํจ์ ์์ฃผ๋ก ๊ต์ก ์์
- alert, confirm, prompt ๋ฑ
- XSS ๋? (CSRF๋ ๋น๊ตํด์ ์ค๋ช )
- XSS ์์ฐ ( https://xss-game.appspot.com/, naver xss ์์ฐ ์์ )
- XSS ์ทจ์ฝ์ ์ฐพ๊ธฐ (๋ฏธ๋ฆฌ ๋ง๋ ์์ ์ฌ์ฉ, ์์ 1-1)
- SQLi ์์ฐ ( https://los.eagle-jump.org/ )
- SQLi ์ง์ ํด๋ณด๊ธฐ (๋ฏธ๋ฆฌ ์์ ๋ฅผ ๋ง๋ค์ด ์ฌ์ฉ, ์์ 1-2, https://los.eagle-jump.org/ )
- ๊ท์น, ์๊ฐ ์๋ด
- CTF ์๋ฒ ์คํ
- ํ์ผ๋ก ๋๋์ด์ ์งํ (๋ฉํ ๋ ๋ฌธ์ ์ ๊ด๋ จ๋ ๊ฐ๋ ๋๋ ์๋ฆฌ๋ง ์๋ ค์ค.)
- ์์์ ๋ฐ๋ผ ๋ณด์ ์ง๊ธ
<?php
$a = $_GET['a'];
echo $a;
?>
=> <script> alert(1); </script>
<?php
$a = $_GET['a'];
if(preg_match('/script/i', $a)) exit("No Hack ~_~");
echo $a;
?>
=> <img src=x onerror="alert(1)">
<?php
include './db_config.php'
if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~");
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
$query = "select id from prob where id='{$_GET[id]}' and pw='{$_GET[pw]}'";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysql_fetch_array(mysql_query($query));
if($result['id']) echo $flag;
highlight_file(__FILE__);
?>