๐ฉ old-01
๋ฌธ์ ํ์ด์ง๋ก ์ด๋ํ๋ฉด ์์ ๊ฐ์ ํ๋ฉด์ ๋ณผ ์ ์๋ค. view-source๋ฅผ ๋๋ฌ ์ฝ๋๋ฅผ ํ์ธํด๋ณด์.
1
2
3
4
5
6
7
8
<?php
include "../../config.php";
if($_GET['view-source'] == 1){ view_source(); }
if(!$_COOKIE['user_lv']){
SetCookie("user_lv","1",time()+86400*30,"/challenge/web-01/");
echo("<meta http-equiv=refresh content=0>");
}
?>
์๋จ ์ฝ๋์์ ์ค์ํ ๋ถ๋ถ์ user_lv
์ด๋ฆ์ ์ฟ ํค ๊ฐ์ ์ค์ ํ๋ ๋ถ๋ถ์ธ ๊ฒ ๊ฐ๋ค.
1
2
3
4
5
6
<?php
if(!is_numeric($_COOKIE['user_lv'])) $_COOKIE['user_lv']=1;
if($_COOKIE['user_lv']>=4) $_COOKIE['user_lv']=1;
if($_COOKIE['user_lv']>3) solve(1);
echo "<br>level : {$_COOKIE['user_lv']}";
?>
ํ๋จ ์ฝ๋์์ ๋ฌธ์ ๋ฅผ ํ ์ ์๋ ํํธ๋ฅผ ์ป์๋ค. user_lv
๋ช
์ ์ฟ ํค ๊ฐ์ด 3 ์ด๊ณผ 4 ๋ฏธ๋ง์ด์ด์ผ ๋ฌธ์ ๋ฅผ ํ ์ ์์์ ํ์ธํ์๋ค.
๋ฉ์ธ ํ์ด์ง๋ก ์ด๋ํ์ฌ ์ฟ ํค ๊ฐ์ ํด๋น ๋ฒ์์ ์์ ์ํ๋ 3.5๋ก ์์ ํ๋ฉด
ํ๋ฆฐ๋ค!
๐ฉ old-06
๋ฌธ์ ํ์ด์ง์ ๋ค์ด๊ฐ๋ฉด ์์ ๊ฐ์ ํ์ด์ง๊ฐ ๋ณด์ธ๋ค. view-source๋ฅผ ํด๋ฆญํด๋ณด๋ php์ฝ๋๋ฅผ ๋ณผ ์ ์์๋ค. ํต์ฌ ์ฝ๋๋ง์ ๋ณด์.
user
๋ช
์ ์ฟ ํค ๊ฐ์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ์ ์์ ์ฝ๋๋ฅผ ์คํํ๋ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค. guest
์ 123qwe
๋ฌธ์์ด์ ๊ฐ๊ฐ id์ pw๊ฐ์ผ๋ก ์ค์ ํ ํ ํด๋น ๋ฌธ์์ด์ 20๋ฒ ๋ฐ๋ณตํ์ฌ base64 ์ธ์ฝ๋ฉํ ๋ค์์ ์ธ์ฝ๋ฉํ ๊ฐ ๋ฌธ์์ด์์ 1, 2, 3, 4, 5, 6, 7, 8 ๋ฌธ์๋ฅผ ๊ฐ๊ฐ์ ๋ฌธ์๋ก ์นํํ๋ค. ๊ทธ๋ ๊ฒ ๋์จ ๊ฒฐ๊ณผ id, pw ๋ฌธ์์ด์ ์ฟ ํค๋ก ์ค์ ํ๋ ๋์์ด๋ค.
ํด๋น ์นํ์ด์ง์ ์ฟ ํค๋ฅผ ์ดํด๋ณด๋ base64๋ก ์ธ์ฝ๋ฉ ๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ ๋ฌธ์์ด์ด value ๊ฐ์ผ๋ก ์ค์ ๋์ด ์์๋ค. HTML ์ฝ๋ ํ๋จ์ php ์ฝ๋๋ฅผ ์ดํด๋ณด์.
์ฝ๋์์ ํ์์๋ ๋ถ๋ถ์ ์ง์ ๋ค. ํด๋น ์ฝ๋๋ user
, password
name์ ์ฟ ํค ๊ฐ์ ๊ฐ์ ธ์ ์์์ ์งํํ ๋ฌธ์์ด ์นํ์ ์ญ์ ์ํํ๊ณ , base64 ๋ฌธ์์ด์ 20๋ฒ ๋ฐ๋ณต decodeํ์ฌ ๊ฒฐ๊ณผ ๋ฌธ์์ด์ด id์ passwword๊ฐ ๊ฐ๊ฐ admin
๊ณผ nimda
๋ผ๋ ๋ฌธ์์ด๊ณผ ์ผ์นํ๋ฉด ๋ฌธ์ ๊ฐ ํ๋ฆฌ๋ ๋ฏํ๋ค. ๊ทธ๋ผ ์ฐ๋ฆฌ๋ admin
๊ณผ nimda
๋ฅผ ์ญ์ผ๋ก ์นํํ๊ณ , base64 decode๋ฅผ 20๋ฒ ์ํํ์ฌ ๋์จ ๋ฌธ์์ด์ ์ฟ ํค๋ก ๊ฐ๊ฐ ์ค์ ํ๋ฉด ๋ฌธ์ ๊ฐ ํ๋ฆฌ๋ ๊ฒ์ ์ ์ ์๋ค. ๋จ์ ๋ฐ๋ณต ๊ณผ์ ์ด๋ Python์ผ๋ก ์ฝ๋๋ฅผ ์ง๋ณด์.
1
import base64
base64 ์ธ์ฝ๋ฉ๊ณผ ๋์ฝ๋ฉ ๊ณผ์ ์ด ํ์ํ๋ฏ๋ก python ๋ด์ฅ ๋ชจ๋ base64๋ฅผ ์ฌ์ฉํ์.
์ญ์ผ๋ก ์นํํ๋ ๊ณผ์ ์ ํจ์๋ก ๊ตฌํํ์ฌ ๋ฌธ์์ด id์ pw๋ฅผ ์ญ์ผ๋ก ์นํํ ๋ฌธ์์ด์ ์ฝ๊ฒ ๊ตฌํด๋ผ ์ ์์๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ ์์์ ์ค๋ช ํ์๋ ๊ณผ์ ๋๋ก ์ฝ๋๋ฅผ ์งํํ๊ณ ์ถ๋ ฅํ ๊ฐ์ ์ฟ ํค๋ก ์ค์ ํ๋
ํ๋ ธ๋ค!
๐ฉ old-10
๋ฌธ์ ํ์ด์ง์ ๋ค์ด๊ฐ๋ ํธ๋์ ์ฐ์ํ๊ฒ ํ๋ ๊ทธ๋ฆผ์ด ์์๋ค. ์์ค์ฝ๋๋ฅผ ๋จผ์ ์ดํด๋ณด์๋ค.
๋ค๋ฅธ ๋ถ๋ถ์ ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ํ๊ทธ๋ค์ด ์กด์ฌํ์๊ณ , ํธ๋ ์์ O๋ฅผ ๊ทธ๋ฆฌ๋ ํ๊ทธ๋ onclick
, onmouseover
, onmouseout
์์ฑ์ ๊ฐ์ง๊ณ ์์๋ค. onmouseover
๊ณผ onmouseout
์์ฑ์ O ๊ธ์์ yOu ๊ธ์๋ฅผ ๋ณ๊ฒฝํ๋ ์ญํ ์ ํ์๊ณ , onclick
์์ฑ์ ํด๋ฆญ ์์ 1px์ฉ ๊ธ์๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฎ๊ธฐ๋ ์ญํ ์ ํ๊ณ ์์๋ค. ํด๋ฆญํด๋ณด๋ฉด
์กฐ๊ธ์ฉ ์ด๋ํจ์ ์ ์ ์์๋๋ฐ, onclick
์์ฑ์์ ํด๋น ๊ธ์ ์คํ์ผ ์์ฑ์ left ๊ฐ์ด 1600px์ด ๋๋ฉด ํน์ ํ์ด์ง๋ก ์ด๋ํจ์ ์ ์ ์์๋ค.
๊ทธ๋์ ํด๋น ํ๊ทธ์ left ๊ฐ์ 1599px๋ก ์ค์ ํ๊ณ ๊ธ์๋ฅผ ํ ๋ฒ ํด๋ฆญํ๋ 1600px์ด ๋๋ฉด์
๋ฌธ์ ๊ฐ ํ๋ ธ๋ค!
๐ฉ old-11
๋ฌธ์ ํ์ด์ง์ ๋ค์ด๊ฐ๋ฉด ์์ ๊ฐ์ ํ๋ฉด์ ๋ณผ ์ ์๋ค. view-source๋ฅผ ๋๋ฌ ์ฝ๋๋ฅผ ํ์ธํด๋ณด์.
1
2
3
4
5
6
7
8
<?php
$pat="/[1-3][a-f]{5}_.*$_SERVER[REMOTE_ADDR].*\tp\ta\ts\ts/";
if(preg_match($pat,$_GET['val'])){
solve(11);
}
else echo("<h2>Wrong</h2>");
echo("<br><br>");
?>
ํด๋น ๋ถ๋ถ์ด ์ค์ํ ๋ก์ง์ธ๋ฐ, $pat
๋ณ์์ ์ ๊ท์ ๋ฌธ์์ด์ ํ ๋นํ๊ณ ํด๋น ์ ๊ท์๊ณผ val
๋ช
์ ์ธ์ ๊ฐ์ ๋น๊ตํ์ฌ ์ ๊ท์๊ณผ ๋งค์นญํ๋์ง ๊ฒ์ฌํ๋ค. ์ ๊ท์์ ๋ถ์ํด๋ณด๋ฉด
- [1-3] : 1-3 ๋ฒ์์ ์ซ์
- [a-f]{5} : a-f ๋ฒ์์ ๋ฌธ์ - ์ต์ 5๊ฐ
- _ : _ ๋ฌธ์ ํ๋
- .* : ์ด๋ค ๋ฌธ์์ด์ด๋ zero or more
- $_SERVER[REMOTE_ADDR] : ์ ์ํ ํด๋ผ์ด์ธํธ์ IP ์ฃผ์๋ฅผ ๋ํ๋ด๋ PHP ํ๊ฒฝ๋ณ์
- \t : tab ๋ฌธ์
- p : p ๋ฌธ์
- a : a ๋ฌธ์
- s : s ๋ฌธ์
์ด๋ฅผ ๋ง์กฑ์ํค๋ ๋ฌธ์์ด์ val
์ธ์๋ก ์ ๋ฌํด์ผ ํ๋ค. ์ ๊ท์์ ์ถฉ์กฑ์ํค๋ ๋ฌธ์์ด์ ์์ฑํด๋ณด๋ฉด, 1aaaaa_[ip์ฃผ์]%09p%09a%09s%09s
๊ฐ ๋ ์ ์๋ค. ์ฌ๊ธฐ์ %09๋ tab ๋ฌธ์๋ฅผ url encode ๋ฐฉ์์ผ๋ก ๋ํ๋ธ ๊ฒ์ด๋ค.
https://webhacking.kr/challenge/code-2/?val=1aaaaa_[ip์ฃผ์]%09p%09a%09s%09s
์ด๋ฅผ ์ฃผ์์ฐฝ์ ์ธ์๋ก ์
๋ ฅํ์ฌ GET ๋ฐฉ์์ผ๋ก ๋๊ฒจ์ฃผ๋ฉด,
ํ๋ฆฐ๋ค!
๐ฉ old-14
๋ฌธ์ ํ์ด์ง์ ๋ค์ด๊ฐ๋ณด๋ input ์ฐฝ๊ณผ check ๋ฒํผ๋ง์ด ๋์ฌ์์๋ค. ์์ค์ฝ๋ ๋จผ์ ํ์ธํด๋ณด์๋ค.
form ํ๊ทธ ๋ด์ input ํ๊ทธ ๋ ๊ฐ๊ฐ ์์๊ณ ๊ทธ ์ค ๋ฒํผ์ ck()
ํจ์๊ฐ onClilck ์์ฑ์ผ๋ก ์ง์ ๋์ด ์์๋ค. ์คํฌ๋ฆฝํธ ๊ตฌ๋ฌธ์ ck()
ํจ์์ ๋ด์ฉ์ด ์์๊ณ , ์
์งธ์ค๊น์ง๋ ๋๋ต ๋ธ๋ผ์ฐ์ ์ URL์ โ.krโ ๋ฌธ์์ด์ ์ธ๋ฑ์ค ๊ฐ์ 30์ ๊ณฑํ ๊ฐ์ ul
๋ณ์์ ์ ์ฅํ๊ณ ์์๋ค. ์ด๋ฅผ ์
๋ ฅํด์ผ ํ๋ ๊ฒ์ผ๋ก ๋ณด์๋ค.
ul
๊ฐ์ ์์๋ด๊ธฐ ์ํด ์ฝ์ ์ฐฝ์์ ๊ตฌ๋ฌธ์ ์คํํ์ฌ ๋์จ ์ซ์ ๊ฐ์ ์
๋ ฅํ๋
ํ๋ ธ๋ค!
๐ฉ old-15
๋ฌธ์ ํ์ด์ง์ ๋ค์ด๊ฐ๋ฉด ์์ ๊ฐ์ ๋ฌธ๊ตฌ์ ํจ๊ป ์ฌ์ดํธ์ ์ ๊ทผํ ์ ์๊ณ ํ์ธ ๋ฒํผ์ ๋๋ฅด๋ฉด webhacking.kr ๋ฉ์ธ ํ์ด์ง๋ก ์ด๋ํ๋ค.
burp suite๋ฅผ ์ด์ฉํด ์ ์ํ ๋์ ํจํท์ ์ก์๋ณด์.
์์ฒญ์ ๋ฐ๋ผ ์๋ต ํจํท์ ํ์ธํ๋ฉด alert ํจ์๊ฐ ์คํ๋๊ณ ์ดํ์ location.href='/';
๊ตฌ๋ฌธ์ ๋ฐ๋ผ ๋ฉ์ธ ํ์ด์ง๋ก ์ด๋ํ๋ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋ ํ๋๊ทธ๋ฅผ ์ป์ ์ ์๋ ํ์ด์ง๋ก ์ด๋ํ๋ a ํ๊ทธ๊ฐ ์ดํ์ ์ฝ์ ๋๋ฏ๋ก, ์์ฒ๋ผ ๋ฉ์ธ ํ์ด์ง๋ก ์ด๋ํ๋ ๊ตฌ๋ฌธ์ ์ฃผ์์ฒ๋ฆฌํ์ฌ ์๋ต ํจํท์ ๋ฐ์ผ๋ฉด
a ํ๊ทธ๋ฅผ ํ์ธํ ์ ์๊ณ , ์ด๋ฅผ ๋๋ฅด๋ฉด ํ๋๊ทธ๋ฅผ ํ๋ํ์ฌ ๋ฌธ์ ๋ฅผ ํ ์ ์๋ค.
๐ฉ old-16
๋ฌธ์ ํ์ด์ง์ ๋ค์ด๊ฐ๋ ์์ ๊ฐ์ง ์์คํ๋ฆฌ์คํฌ(*)๊ฐ ๋ณด์๋ค. ์์ค์ฝ๋๋ถํฐ ๋ณด์๋ค.
body ํ๊ทธ์๋ font ํ๊ทธ 4๊ฐ ์ฌ์ด์ script๋ฌธ์ด ๋ค์ด์์๋ค. body ํ๊ทธ์๋ ํค๋ณด๋ ์ด๋ฒคํธ ๋ฐ์ ์์ keyCode ๊ฐ์ mv()
ํจ์์ ์ธ์๋ก ์ ๋ฌํ๊ณ ์๋ค. mv()
ํจ์ ๋ด์์๋ kk()
ํจ์๋ฅผ ํธ์ถํ๊ณ ์๋๋ฐ ์ด ํจ์๋ ์์ฑ๋ ๋์๋ก 6์๋ฆฌ ์์ฐ์๋ฅผ ๋ง๋ค์ด ํด๋น ์ซ์์ ํด๋นํ๋ ์์ ์ฝ๋์ ์์ ๊ฐ์ง *๋ฅผ ์์ฑํ๊ณ ์๋ค.
ํค๋ณด๋๋ฅผ ๋ง ๋๋ฅด๋ฉด ์ด๋ฐ ํ๋ฉด์ ๋ณผ ์ ์๋ค. ์ด ๋์์ ์ค์ํ์ง ์๊ณ , mv()
ํจ์ ๋ด์ ๋ง์ง๋ง if
๋ฌธ์ keyCode ๊ฐ์ด 124์ ๊ฐ์ผ๋ฉด php ๋์์ ํ๋ ๋ฐฉ์์ด๋ค. ASCII code 124๋ฒ์ |
๋ฌธ์๋ฅผ ์๋ฏธํ๊ธฐ์ ํค๋ณด๋๋ก ์
๋ ฅํ๋ฉด
ํ๋ ธ๋ค !
๐ฉ old-17
๋ฌธ์ ํ์ด์ง์ ๋ค์ด๊ฐ๋ 14๋ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ๋ ฅ ์ฐฝ๊ณผ check ๋ฒํผ์ด ์์๋ค. ์์ค์ฝ๋๋ฅผ ๋จผ์ ๋ณด์๋ค.
14๋ฒ๊ณผ ์ ์ฌํ ๋ฌธ์ ์์ ์ ์ ์์๊ณ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฝ์ ์ฐฝ์์ unlock
๋ณ์๋ฅผ ๊ณ์ฐ ํด๋ณด์๋ค.
์ฐ์ฐํ์ฌ ๋์จ ๊ฒฐ๊ณผ๋ฅผ input์ ์ ๋ ฅํ๊ณ ๋ฒํผ์ ํด๋ฆญํ๋ฉด
ํ๋ ธ๋ค!
๐ฉ old-18
๋ฌธ์ ํ์ด์ง์ ๋ค์ด๊ฐ๋ฉด ์์ ๊ฐ์ ํ๋ฉด์ด ๋์จ๋ค. ์ ๋ชฉ์ ํฌ๊ฒ ์ฐ์ฌ์๋ฏ์ด SQL Injection์ ์ฌ์ฉํ๋ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ๋ค. view-source๋ฅผ ๋๋ฌ๋ณด์.
ํํ์ด์ง๋ฅผ ๊ตฌ์ฑํ๋ PHP ํ์ผ์ด ์๋ค. ๊ทธ ์ค ์ค์ํ php ์ฝ๋๋ง์ ๋ณด์. GET ๋ฐฉ์์ผ๋ก no
ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ์์จ๋ค. ๊ทธ ๋ค์ preg_match()
ํจ์๋ฅผ ํตํด ๋ฐ์์จ ํ๋ผ๋ฏธํฐ ๊ฐ์์ ์ ๊ทํํ์์ผ๋ก ๋งค์นญ๋๋ ๋ฌธ์์ด์ด ์๋์ง ๊ฒ์ฌํ์ฌ ์๋ค๋ฉด, ์ข
๋ฃํ๋ ํ์์ด๋ค. ์ด๋ฅผ ์ฐํํ์ฌ SQL Injection ๊ณต๊ฒฉ ๊ธฐ๋ฒ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ ๊บผ๋ด์ด result
๋ณ์์ โadminโ ๋ฌธ์์ด์ ์ง์ด ๋ฃ์ผ๋ฉด ํ๋ฆฌ๋ ๋ฌธ์ ์ด๋ค. ๋ฌธ์์ด ์ฐํ๋ฅผ ์ํด ์ ๊ทํํ์์ ๋ถ์ํด๋ณด์.
์ ๊ทํํ์ :
/ |\/|\(|\)|\||&|select|from|0x/i
- / /i : case insensitive ๋ฐฉ์์ ์ ๊ทํํ์์ด๋ค. select์ from์ ์ฌ์ฉํ์ง ๋ชปํ ๊ฒ ๊ฐ๋ค.
- | : or์ ๊ธฐ์ค์ผ๋ก ๋ฌธ์๋ฅผ ๋์ ์ ์๋ค. ํ๋์ฉ ๋์ด์ ๋ณด์.
- ๊ณต๋ฐฑ :
๊ณต๋ฐฑ
๋ถ๊ฐ - / :
/
๋ถ๊ฐ - ( :
(
๋ถ๊ฐ - ) :
)
๋ถ๊ฐ - | :
|
๋ถ๊ฐ - & :
&
๋ถ๊ฐ - select :
select
๋ฌธ์์ด ๋ถ๊ฐ(๋๋ฌธ์๋ ๋ถ๊ฐ) - from :
from
๋ฌธ์์ด ๋ถ๊ฐ(๋๋ฌธ์๋ ๋ถ๊ฐ) - 0x :
0x
๋ฌธ์์ด ๋ถ๊ฐ
์ด๋ค์ ์ฌ์ฉํ์ง ์๊ณ ์๋์ ๊ฐ์ด ์ฝ์
๋ฌธ์ ์์ฑํ ์ ์๋ค. 0%09or%09id='admin'%09and%09no=2
- %09 :
Tab
๋ฌธ์์ด๋ค. ๊ณต๋ฐฑ ๋์ ์ฌ์ฉํ ์ ์๋ค. - or : or ๋ฌธ์ผ๋ก id ๊ฐ์
admin
, no ๊ฐ์2
์ธ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ณํ ์ ์๋ค.
๐ฝ ์ฝ์ ๋ SQL๋ฌธ
1
select id from chall18 where id='guest' and no=0 or id='admin' and no=2
์ฝ์ ๋ฌธ์ URL์ ํตํด ์์ฒญํ๋ฉด,
ํ๋ ธ๋ค!
๐ฉ old-19
๋ฌธ์ ํ์ด์ง์ ์ ์ํ๋ฉด id ์ ๋ ฅ ๊ฐ์ โadminโ์ด๋ผ๋ ๋ฌธ์์ด์ด ์ฑ์์ ธ์๊ณ ์ ์ถํ ์ ์๋ ํผ์ ํ์ธํ ์ ์๋ค. admin์ผ๋ก ๋ก๊ทธ์ธ ์๋ํ๋ฉด admin์ด ์๋๋ผ๋ ๋ฌธ๊ตฌ๋ฅผ ํ์ธํ ์ ์๊ณ , ๋ค๋ฅธ id๋ก ๋ก๊ทธ์ธ์ ์๋ํ๋ฉด ํด๋น ์์ด๋๋ก ๋ก๊ทธ์ธํ ์ ์๊ณ , cookie ๊ฐ์ด ์ค์ ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ id๋ฅผ ์กฐํํ๋ ์์คํ
์ผ ์๋ ์๋ค๋ ์๊ฐ์ SQL injection์ ์๋ํ์๋ค. ์
๋ ฅ ๊ฐ ๊ธธ์ด ์ ํ์ด ์์ด ์์ฒญ ํจํท์ ์์ ํ์ฌ ์ ์กํ์๋ค. ๋ฌธ์์ด์ admin'+or+1=1--
๋ก ์ค์ ํ์ฌ ์ ์กํ์๋๋ฐ ์์ ๊ฐ์ด ๋ก๊ทธ์ธ์ด ๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค. ์ด๋, --
๋ฌธ์๊ฐ ์ฌ๋ผ์ง ๊ฒ์ผ๋ก ๋ณด์ ์ฃผ์์ผ๋ก ์ธ์ํ๋ ๋ฏ ํ์๋ค.
๊ทธ๋์ ์
๋ ฅ ๊ฐ์ admin'--
์ผ๋ก ๋ฐ๊พธ์ด ๋ก๊ทธ์ธ์ ์๋ํ์, ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๋ค.
๐ฉ old-20
๋ฌธ์ ํ์ด์ง์์๋ ์์ ๊ฐ์ ๊ตฌ์ฑ์ด์๊ณ ์ฐ์ ์์ค์ฝ๋๋ฅผ ๋ณด์๋ค.
input ์ฐฝ๋ค์ form ํ๊ทธ ๋ด์ ์์นํ๊ณ submit ๋ฒํผ์ ๋๋ฅด๋ฉด ck()
ํจ์๊ฐ ์คํ๋๋ ํํ์๋ค. ํจ์์ ๋ด์ฉ์ ๋ณด์ nickname, comment, captcha์ ๊ฐ์ ์
๋ ฅํด์ผ ํ๋ฉฐ ๋๋ค์ผ๋ก ์์ฑ๋๋ captcha ๋ฌธ์๋ฅผ ์๋ง๊ฒ ์
๋ ฅํด์ผ form์ submit์ด ์๋ํ๋๋ฏ ํ๋ค. 2์ด ๋ด์ ์ ์ถํ๊ธฐ ์ํด์๋ python์ selenium ๋ชจ๋์ ์ด์ฉํ์๋ค.
๐ฝ import
1
2
3
4
from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from time import sleep
driver.Chrome()
ํจ์๋ ๋ฌด์จ ์ด์ ์ธ์ง ์๊พธ ์ค๋ฅ๊ฐ ๋์ ChromeDriverManager๋ฅผ ์ด์ฉํ์ฌ ํฌ๋กฌ ๋๋ผ์ด๋ฒ๋ฅผ ์
๋ ๋์ ๋๋ผ์ด๋ฒ๋ก ์ค์ ํ์๋ค.
webhacking.kr ์ฌ์ดํธ๋ ๋ก๊ทธ์ธ ์ํ์์ ๋ฌธ์ ์ฌ์ดํธ์ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์์๊ฒ id, password๋ฅผ ์ ๋ ฅ ๋ฐ๊ณ
๋ก๊ทธ์ธ ์ฐฝ์ ๊ฐ ํ๊ทธ์ XPATH๋ฅผ ๋ณต์ฌํ์ฌ id, password๋ฅผ ์
๋ ฅํ๊ณ ๋ก๊ทธ์ธ์ ํ๋๋ก ํ์๋ค. ์ฒ์์๋ find_element_by_xpath()
ํจ์๋ฅผ ์ด์ฉํ์์ผ๋ DeprecationWarning ๋ฌธ๊ตฌ๊ฐ ์ถ๋ ฅ๋์ด find_element()
ํจ์๋ฅผ ์ด์ฉํ์๋ค.
๋ก๊ทธ์ธ ์ธ์ ์ด ์ ์ง๋ ์ํ์์ ๋ฌธ์ ํ์ด์ง๋ก ์ด๋
๋ฌธ์ ํ์ด์ง๋ก ์ด๋ ํ nickname๊ณผ comment์๋ ์๋ฌด ๋ฌธ์๋ฅผ ์ฑ์๋ฃ๊ณ , captcha์ value ์์ฑ ๊ฐ์ ๊ฐ์ ธ์ captcha๋ก ์ ๋ ฅํ๊ณ , submit ๋ฒํผ์ ํด๋ฆญํ๋๋ก ํ์๋ค.
์คํ ์ํค๋ ํ๋ ธ๋ค !
๐ฉ old-24
๋ฌธ์ ํ์ด์ง์ ์ ์ํ๋ฉด ํด๋ผ์ด์ธํธ์ ip์ agent ์ ๋ณด์ ์์ค๋ณด๊ธฐ ๋งํฌ๋ฅผ ํ์ธํ ์ ์๋ค. โWrong IP!โ ๋ฌธ๊ตฌ๋ฅผ ๋ณด์ IP๋ฅผ ์กฐ์ํด์ผํจ์ ์ ์ ์๋ค. ์์ค์ฝ๋๋ฅผ ํ์ธํ์.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// $_SERVER, $_COOKIE ๋ฐฐ์ด ์์ ํค ๊ฐ์ ๋ณ์ํ
extract($_SERVER);
extract($_COOKIE);
// ๋ณ์ ๊ฐ ์ ์ฅ
$ip = $REMOTE_ADDR;
$agent = $HTTP_USER_AGENT;
if($REMOTE_ADDR){
// $REMOTE_ADDR ๋ฌธ์์ด ํํฐ๋ง
$ip = htmlspecialchars($REMOTE_ADDR);
$ip = str_replace("..",".",$ip);
$ip = str_replace("12","",$ip);
$ip = str_replace("7.","",$ip);
$ip = str_replace("0.","",$ip);
}
...(์๋ต)...
// ํํฐ๋ง๋ $ip ๋ณ์ ๋ฌธ์์ด์ด 127.0.0.1๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๋ฌธ์ ํด๊ฒฐ
if($ip=="127.0.0.1"){
solve(24);
exit();
}
else{
echo "<hr><center>Wrong IP!</center>";
}
์ฝ๋์์ ์ฃผ์ํ ๋ถ๋ถ์ ์์ ๊ฐ๋ค. ์๋ฒ์ ์ ์ํ ํด๋ผ์ด์ธํธ์ ์ ๋ณด๋ฅผ ๋ด์ $_SERVER
๋ฐฐ์ด๊ณผ $_COOKIE
๋ฐฐ์ด์ ํค ๊ฐ์ ๋ณ์ํํ๊ณ ๊ทธ ์ค ํด๋ผ์ด์ธํธ์ ip ๊ฐ์ ๋ด์ $REMOTE_ADDR
๋ณ์ ๊ฐ์ ํํฐ๋งํ ๊ฐ์ด ๋ฌธ์์ด โ127.0.0.1โ์ด๋ฉด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
์ฌ๊ธฐ์ ์ฃผ๋ชฉํด์ผํ๋ ์ ์ ํด๋ผ์ด์ธํธ์ ip ๊ฐ์ $_SERVER[$REMOTE_ADDR]
์ ๊ฐ์ด ๋ฐฐ์ด์ ์ง์ ์ ๊ทผํ์ฌ ๊ฐ์ ๊ฐ์ ธ์ค๋ ๊ฒ์ด ์๋๋ผ ๋ฐฐ์ด์ ํค ๊ฐ์ ๋ณ์ํํ์๋ค๋ ์ ์ด๋ค. ์ด๋ $_SERVER
๋ฐฐ์ด๋ฟ๋ง ์๋๋ผ $_COOKIE
๋ฐฐ์ด๋ ๋ณ์ํํ๊ณ ์๋๋ฐ, extract
ํจ์๋ก $_COOKIE
๋ฐฐ์ด์ ๋์ค์ ๋ณ์ํํ๊ณ ์๊ธฐ ๋๋ฌธ์ $_SERVER
์ ํค ๊ฐ๊ณผ ์ค๋ณต๋๋ค๋ฉด $_COOKIE
๋ฐฐ์ด์ ํค ๊ฐ์ผ๋ก ๋ณ์ ๊ฐ์ด ์ ํด์ง๋ค. php ์ฝ๋๋ฅผ ํตํด ์ด๋ฅผ ํ์ธํด๋ณด์๋ค.
๊ทธ๋ฌ๋ฏ๋ก ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ ์์ ์กฐ์ํ ์ ์๋ $_SERVER
๋ฐฐ์ด ๋์ ์ $_COOKIE
๊ฐ์ ์ด์ฉํ์ฌ $REMOTE_ADDR
์ ์ ์กํ๋ฉด ๊ทธ ๊ฐ์ ์ง์ ํ ์ ์๋ค. ๋ฐ๋ผ์ ํํฐ๋ง์ ์ฐํํ์ฌ ๋ฌธ์์ด โ127.0.0.1โ์ ๋ง๋ค์ ์๋ ๋ฌธ์์ด 112277...00...00...1
์ ์์ฒญ cookie ๊ฐ์ ํฌํจํ์ฌ ์์ฒญ์ ๋ณด๋ด๋ณด์.
์์ ๊ฐ์ด ์ฟ ํค ๊ฐ์ ํฌํจํ์ฌ ์์ฒญ์ ์ ์กํ๋ฉด
ํด๋ผ์ด์ธํธ ip๋ฅผ ์กฐ์ํ ์ ์๋ค.
๐ฉ old-26
๋ฌธ์ ํ์ด์ง์ ์ ์ํ๋ฉด ํ์ด์ง์ ์์ค๋ฅผ ๋ณผ ์ ์๋ view-source ๋งํฌ๋ฅผ ํ์ธํ ์ ์๋ค. ํด๋น ๋งํฌ๋ก ์ด๋ํด๋ณด์.
1
2
3
4
5
6
7
8
9
10
11
12
<?php
// id ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ ๊ฐ์์ 'admin'์ด๋ผ๋ ๋ฌธ์์ด๊ณผ ์ ๊ท์ ๊ฒ์ฌ๋ฅผ ํ์ฌ ๊ฐ๋ค๋ฉด "no!"๋ฅผ ์ถ๋ ฅํ๊ณ ํ๋ก๊ทธ๋จ์ ์ข
๋ฃํ๋ค.
if(preg_match("/admin/",$_GET['id'])) { echo"no!"; exit(); }
// id ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ ๊ฐ์ urldecode ํจ์๋ฅผ ํตํด ๋์ฝ๋ฉํ๊ณ ํด๋น ๊ฐ์ id ํ๋ผ๋ฏธํฐ ๊ฐ์ ๋ค์ ๋ด๋๋ค.
$_GET['id'] = urldecode($_GET['id']);
// id ํ๋ผ๋ฏธํฐ ๊ฐ์ด ๋ฌธ์์ด 'admin'๊ณผ ๊ฐ๋ค๋ฉด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
if($_GET['id'] == "admin"){
solve(26);
}
?>
์์ค์ฝ๋์์ ์ค์ํ ๋ถ๋ถ์ ์์ ๊ฐ๋ค. ์ฐ๋ฆฌ๋ ์ ๊ท์ ๊ฒ์ฌ์์ โadminโ ๋ฌธ์์ด์ ์ฐํํ์ฌ id ํ๋ผ๋ฏธํฐ๋ก ๋๊ธฐ๋ฉด ๋ฌธ์ ๋ฅผ ํ ๊ฒ๋ง ๊ฐ๋ค. ํ์ง๋ง percent-encoding์ผ๋ก url ์ธ์ฝ๋ฉ๋ ํด๋ณด์์ง๋ง ๋ฌธ์ ๋ ํ๋ฆฌ์ง ์์๋ค.
์ด๋, urldecode
ํจ์๋ฅผ ์ฃผ๋ชฉํ์๋ค. ํด๋น ํจ์์ ๋ํ ์ ๋ณด๋ฅผ php ๊ณต์ ํํ์ด์ง์์ ํ์ธํ์๋ค. ์ฌ๊ธฐ์ ํ๋์ ์ ๋ณด๋ฅผ ์ป์ ์ ์์๋๋ฐ, $_GET
๊ณผ $_REQUEST
๋ณ์๋ ์ด๋ฏธ ๋์ฝ๋ฉ ๋์ด ์๋ค๋ ๊ฒ์ด๋ค. ์ฐ๋ฆฌ๊ฐ id
ํ๋ผ๋ฏธํฐ๋ฅผ ๋๊ธธ ๋ $_GET
๋ณ์์๋ ์ด ๊ฐ์ด ์ด๋ฏธ ํ ๋ฒ ๋์ฝ๋ฉ ๋์ด ์๊ณ , urldecode($_GET['id'])
๊ตฌ๋ฌธ์ ๋์ฝ๋ฉ๋ ๋ฌธ์์ด์ ๋ค์ ํ ๋ฒ ๋์ฝ๋ฉํ๋ ์
์ด ๋๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ๋์ฝ๋ฉ์ด 2๋ฒ ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
1
2
admin -> %61%64%6d%69%6e
%61%64%6d%69%6e -> %25%36%31%25%36%34%25%36%64%25%36%39%25%36%65
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ id
ํ๋ผ๋ฏธํฐ ๊ฐ์ผ๋ก โadminโ ๋ฌธ์์ด์ ๋ ๋ฒ ์ธ์ฝ๋ฉํ ๊ฐ์ ๋๊ฒจ์ฃผ๋ฉด ๋ฌธ์ ๋ฅผ ํ ์ ์๋ค.
๐ฉ old-27
18๋ฒ ๋ฌธ์ ์ ๊ฐ์ SQL Injection ๋ฌธ์ ์ด๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ์์ค์ฝ๋ ๋ด์์ ์ค์ํ ๋ถ๋ถ๋ง์ ๋ณด์.
๊ฐ์ ๋ฐฉ์์ผ๋ก ์ ๊ทํํ์์ ์ด์ฉํ์ฌ ๋ฌธ์์ด์ ๊ฒ์ฌํ๊ณ db์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ๋ค. ์ ๊ทํํ์์ ๋ถ์ํด๋ณด์.
์ ๊ทํํ์ :
/#|select|\(| |limit|=|0x/i
- / /i : case insensitive ๋ฐฉ์์ ์ ๊ทํํ์์ด๋ค. select์ from์ ์ฌ์ฉํ์ง ๋ชปํ ๊ฒ ๊ฐ๋ค.
- | : or์ ๊ธฐ์ค์ผ๋ก ๋ฌธ์๋ฅผ ๋์ ์ ์๋ค. ํ๋์ฉ ๋์ด์ ๋ณด์.
- # :
#
๋ถ๊ฐ - select :
select
๋ฌธ์์ด ๋ถ๊ฐ(๋๋ฌธ์๋ ๋ถ๊ฐ) - ( :
(
๋ถ๊ฐ - ๊ณต๋ฐฑ :
๊ณต๋ฐฑ
๋ถ๊ฐ - limit :
limit
๋ฌธ์์ด ๋ถ๊ฐ(๋๋ฌธ์๋ ๋ถ๊ฐ) - = :
=
๋ถ๊ฐ - 0x :
0x
๋ฌธ์์ด ๋ถ๊ฐ
18๋ฒ ๋ฌธ์ ์๋ ๋ค๋ฅด๊ฒ ๊ดํธ()๊ฐ SQL๋ฌธ์ ๋ค์ด์๋ค. ์ด๋ฅผ ์ ์ํ์ฌ ์๋์ ๊ฐ์ด ์ฝ์ ๋ฌธ์ ์์ฑํ ์ ์๋ค.
0)%09or%09id%09like%09'admin'%09and%09no>1%09and%09no<3%09;%00
- ) : ๊ดํธ๋ฅผ ๋ซ์์ฃผ์ด ๊ตฌ๋ฌธ์ ๋ถ๋ฆฌํ์.
- %09 :
Tab
๋ฌธ์์ด๋ค. ๊ณต๋ฐฑ ๋์ ์ฌ์ฉํ ์ ์๋ค. - like :
=
๋ฌธ์ ๋์ ๋ฌธ์์ด์ ๋น๊ตํ ์ ์๋ ์ฐ์ฐ์์ด๋ค.id='admin'
๊ณผ ๊ฐ์ ๊ธฐ๋ฅ. - no>1 and no<3 :
=
๋ฌธ์ ๋์ ์ซ์ ๋น๊ต๋ฅผ ์ํด ๋ถ๋ฑํธ๋ก ์ซ์ 2๋ก ์ ํํ์. - ;%00 : ๋ค์ ์๋
)
๋ฌธ์๋ฅผ ์์์ํค๊ธฐ ์ํด ์ฃผ์ ์ญํ ์ ํ๋ ๋ฌธ์๋ฅผ ๋ฃ์ด์ฃผ์.
๐ฝ ์ฝ์ ๋ SQL๋ฌธ
1
select id from chall27 where id='guest' and no=(0) or id like 'admin' and no>1 and no<3 ;%00)
URL๋ก ์์ฒญํ๋ฉด,
ํ๋ฆฐ๋ค!
๐ฉ old-32
๋ฌธ์ ํ์ด์ง์ ๋ค์ด๊ฐ๋ 1500์ฌ๊ฐ์ Webhacking.kr ์ ์ ์ ๋ชฉ๋ก์ด ์์๊ณ ์ ์ ๋ณ๋ก hit ์ ์๊ฐ ์์๋ค. ์ ์ ํ ๋ช ์ ํด๋ฆญํ๋ ๊ทธ์ hit์ด ๋์ด๋ ๊ฒ์ผ๋ก ๋ณด์ 100๋ฒ ํด๋ฆญํด์ผ ํ๋ ๋ฌธ์ ๋ก ๋ณด์๋ค. ๊ทธ๋ฌ๋ ํ ๋ฒ hitํ ํ๋ก๋
๋ค์๊ณผ ๊ฐ์ ๋ฌธ๊ตฌ์ ํจ๊ป hit๋ฅผ ํ ์ ์์๋ค.
cookie๋ฅผ ํ์ธํด๋ณธ ๊ฒฐ๊ณผ vote_check๋ช ์ ๊ฐ์ผ๋ก ok๊ฐ ์ธํ ๋ ๊ฒ์ ๋ณผ ์ ์์๊ณ ์ด๋ฅผ ์ญ์ ํ๋ hit ํ ์ ์์๋ค. 100๋ฒ ๋ฐ๋ณต์ ์ํด์๋ ์๋ํ๊ฐ ํ์ํ ๊ฒ ๊ฐ์ ํ์ด์ฌ์ selenium ๋ชจ๋์ ์ฌ์ฉํ์๋ค.
Webhacking.kr์ ๋ก๊ทธ์ธ์ ํด์ผ ๋ฌธ์ ํ์ด์ง์ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ selenium์์ ๋ก๊ทธ์ธ ํ๋ ๊ณผ์ ์ด ํ์ํ๋ค. ํด๋น ๊ณผ์ ์ Challenge(old) - 32 ์์ ๋ค๋ฃจ์๋ค. ๋ฌธ์ ํ์ด์ง๋ก ๋์ด๊ฐ๋ค.
๋ฐ๋ณต๋ฌธ์ ํตํด 100๋ฒ hit๋ฅผ ํ๋๋ก ๊ตฌํํ์๊ณ ,
hit๋ ํ
์ด๋ธ ํ๊ทธ์ onclick
์์ฑ์ผ๋ก ์์ ๊ฐ์ด URL์ ํตํด GET ํธ์ถ์ ํ๊ณ ์์๊ณ , ๋์ User Name์ ๋งค๊ฐ๋ณ์๋ก ํ์ฌ ํธ์ถํ๋๋ก ํ์๋ค. ๋ฐ๋ณต์ ํ๋ฉฐ โvote_checkโ๋ช
์ cookie๋ ์ค๊ฐ ์ค๊ฐ ์ญ์ ํด์ฃผ์๊ณ ์ฝ๋๋ฅผ ์คํํ๋ ํ๋ ธ๋ค!
๐ฉ old-33
์ด ๋ฌธ์ ๋ ๋จ๊ณ๋ณ๋ก ๋ฌธ์ ๋ฅผ ํ๋ฉฐ ๊ทธ ๋ค์ ๋จ๊ณ์ ๋ฌธ์ ํ์ด์ง ๊ฒฝ๋ก๋ฅผ ์์๋ด์ด ์ต์ข ๋ฌธ์ ๊น์ง ํ์ด๋ด๋ ๋ฌธ์ ์ด๋ค. ํ์ด์ง์ ์์ค๋ฅผ ๋ณด๊ณ ์๊ตฌํ๋ ์กฐ๊ฑด์ ๋ง์กฑ์ํค๋ฉด ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ๋ ๋งํฌ๋ฅผ ์ ๊ณตํ๋๋ก ๋์ด์๋ค.
์ฒซ ๋ฒ์งธ ๋ฌธ์ ๋ถํฐ ํ์ธํด๋ณด์.
1
2
3
4
<?php
if($_GET['get']=="hehe") echo "<a href=???>Next</a>";
else echo("Wrong");
?>
GET ์์ฒญ ์์ ํ๋ผ๋ฏธํฐ get
๊ฐ์ผ๋ก hehe
๊ฐ์ ํฌํจ์์ผ ์์ฒญํ๋ฉด ๋๋ค.
1
https://webhacking.kr/challenge/bonus-6/?get=hehe
์์ ๊ฐ์ด ์์ฒญํ๋ฉด ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ ์ ์๋ค.
1
2
3
4
5
<?php
if($_POST['post']=="hehe" && $_POST['post2']=="hehe2") echo "<a href=???>Next</a>";
else echo "Wrong";
?>
๋ ๋ฒ์งธ ๋ฌธ์ ๋ ๋ฐ๋ ๊ฐ์ผ๋ก post
๋ฐ์ดํฐ์ hehe
๋ฅผ, post2
๋ฐ์ดํฐ์ hehe2
๋ฅผ ํฌํจํ์ฌ POST ์์ฒญ์ ๋ณด๋ด๋ฉด ๋๋ค.
์ฝ์ ๋๊ตฌ๋ฅผ ํตํด์๋ ์์ฒญํ ์ ์์ง๋ง ์๋ต ํจํท์ form
์ ์ฝ์
ํ์ฌ ์์ฒญ ํด๋ณด์.
1
2
3
4
5
<form action="lv2.php" method="post">
<input name="post">
<input name="post2">
<input type=submit>
</form>
์์ ๊ตฌ๋ฌธ์ ์๋ต ํจํท์ ์ถ๊ฐํ๊ณ , ๊ฐ๊ฐ์ input ๊ฐ์ผ๋ก hehe
์ hehe2
๋ฅผ ๋ฃ์ด์ฃผ๊ณ ์ ์ถํ๋ฉด ๋ค์ ๋ฌธ์ ๋ก ๋์ด๊ฐ ์ ์๋ค.
1
2
3
4
<?php
if($_GET['myip'] == $_SERVER['REMOTE_ADDR']) echo "<a href=???>Next</a>";
else echo "Wrong";
?>
์ธ ๋ฒ์งธ ๋ฌธ์ ๋ ๋ฌธ์ ๋ฅผ ์ ์ํ ์ปดํจํฐ์ ๊ณต์ธ IP ๊ฐ์ myip
ํ๋ผ๋ฏธํฐ์ ํฌํจ์์ผ GET ์์ฒญ์ ๋ณด๋ด๋ฉด ๋๋ค.
1
https://webhacking.kr/challenge/bonus-6/33.php?myip={๊ณต์ธip}
1
2
3
4
<?php
if($_GET['password'] == md5(time())) echo "<a href=???>Next</a>";
else echo "hint : ".time();
?>
๋ค ๋ฒ์งธ ๋ฌธ์ ๋ php์์ time
ํจ์ ๊ฐ์ md5
ํจ์๋ฅผ ํตํด ์ํธํํ ๊ฐ์ password
ํ๋ผ๋ฏธํฐ์ ํฌํจ์์ผ GET ์์ฒญ์ ๋ณด๋ด๋ฉด ๋๋ ๋ฌธ์ ์ด๋ค.
์๋ก๊ณ ์นจํ ๋๋ง๋ค hint๋ก ์ ๊ณต๋๋ time ๊ฐ์ ํฌ๋งท์ ๋ฐ๋ผ ๋ช ์ด ๋ค์ ์๊ฐ ๊ฐ์ ์จ๋ผ์ธ md5 ์ํธํ ํด์ ์ด์ฉํ์ฌ ์์ฑ๋ ๋ฌธ์์ด์ ์ด์ฉํด ํด๋น ์๊ฐ ๋๊น์ง ์๋ก๊ณ ์นจํ๋ฉด ๋ฌธ์ ๋ฅผ ํ ์ ์๋ค.
time() | md5(time()) |
1701696200 | c4f184e9285c85f721c80625538d0096 |
1
https://webhacking.kr/challenge/bonus-6/l4.php?password=c4f184e9285c85f721c80625538d0096
1
2
3
4
5
<?php
if($_GET['imget'] && $_POST['impost'] && $_COOKIE['imcookie']) echo "<a href=???>Next</a>";
else echo "Wrong";
?>
๋ค์ฏ ๋ฒ์งธ ๋ฌธ์ ๋ ๋ค์ ์กฐ๊ฑด์ ๋ง์กฑ์์ผ ์์ฒญ์ ๋ณด๋ด์ผํ๋ค.
imget
ํ๋ผ๋ฏธํฐ๋ฅผ ํฌํจ์์ผ GET ์์ฒญimpost
๋ฐ์ดํฐ๋ฅผ ํฌํจํ์ฌ POST ์์ฒญimcookie
์ฟ ํค ๊ฐ์ ํฌํจ์์ผ ์์ฒญ
1
2
3
4
<form action="md555.php" method="post">
<input name="impost">
<input type="submit">
</form>
์ฐ์ 2๋ฒ ์กฐ๊ฑด์ ์ํด ์์ ๊ฐ์ ์๋ต ํจํท์ form
์ ์ฝ์
ํ์๋ค.
๊ทธ ๋ค์์ผ๋ก input ๊ฐ์ ์๋ฌด ๋ฐ์ดํฐ๋ฅผ ์ฝ์
ํ๊ณ , ์์ฒญ์ ๋ณด๋ด๋ ํจํท์์ URL ๋ถ๋ถ์ imget
ํ๋ผ๋ฏธํฐ ๊ฐ์ ํฌํจํ์๊ณ , imcookie
๊ฐ์ ์ฟ ํค ๊ฐ์ผ๋ก ์ง์ ํ๋ฉด ์์ ๊ฐ์ ํจํท์ด ๊ตฌ์ฑ๋๋ค. ์ด๋๋ก ์์ฒญ์ ๋ณด๋ด๋ฉด ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ ์ ์๋ค.
1
2
3
4
<?php
if($_COOKIE['test'] == md5($_SERVER['REMOTE_ADDR']) && $_POST['kk'] == md5($_SERVER['HTTP_USER_AGENT'])) echo "<a href=???>Next</a>";
else echo "hint : {$_SERVER['HTTP_USER_AGENT']}";
?>
์ฌ์ฏ ๋ฒ์งธ ๋ฌธ์ ๋ ๋ค์ ์กฐ๊ฑด์ ๋ง์กฑ์ํค๋ฉด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
test
์ฟ ๊ธฐ ๊ฐ์ผ๋ก ๊ณต์ธ ip ๊ฐ์ md5 ์ํธํํ ๊ฐ์ ํฌํจ์ํจ๋ค.- ๋ฐ๋ ๊ฐ์
kk
๊ฐ์ผ๋ก ํด๋ผ์ด์ธํธ์HTTP_USER_AGENT
๊ฐ์ md5 ์ํธํํ ๊ฐ์ ํฌํจ์์ผ POST ์์ฒญ์ ํ๋ค.
1
2
3
4
<form action="gpcc.php" method="post">
<input name="kk">
<input type="submit">
</form>
2๋ฒ ์กฐ๊ฑด์ ์ํด ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ต ํจํท์ form
์ ์ฝ์
ํ๊ณ , input ๋ฐ์ดํฐ๋ก hint๋ฅผ ํตํด ์ป์ ๊ฐ์ ์ํธํํ์ฌ ์ ๋ฌํ์.
์ด๋ ์์ฒญ ํจํท์ cookie ๊ฐ์ ํฌํจ์์ผ ์ ์กํ๋ฉด ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ ์ ์๋ค.
1
2
3
4
5
<?php
$_SERVER['REMOTE_ADDR'] = str_replace(".","",$_SERVER['REMOTE_ADDR']);
if($_GET[$_SERVER['REMOTE_ADDR']] == $_SERVER['REMOTE_ADDR']) echo "<a href=???>Next</a>";
else echo "Wrong<br>".$_GET[$_SERVER['REMOTE_ADDR']];
?>
์ผ๊ณฑ ๋ฒ์งธ ๋ฌธ์ ๋ ์ฝ๋ ํด์์ ์ฃผ์ํด์ผ ํ๋ ๋ฌธ์ ์ด๋ค. ๊ณต์ธ ip ๊ฐ์์ .
์ ์ ๊ฑฐํ ๊ฐ์ $_SERVER['REMOTE_ADDR']
๋ณ์์ ํ ๋นํ๊ณ , ํด๋น ๊ฐ์ ํ๋ผ๋ฏธํฐ ์ด๋ฆ๊ณผ ๊ฐ์ผ๋ก ํ์ฌ GET ์์ฒญํ๋ฉด ๋๋ค.
1
https://webhacking.kr/challenge/bonus-6/wtff.php?118235412=118235412
์ด๋ฐ์์ผ๋ก ์์ฒญํ๋ฉด ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ ์ ์๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
<?php
// GET ์์ฒญ ์์ ๋ฐ์ ํ๋ผ๋ฏธํฐ์ ํค์ ๊ฐ์ ๋ณ์ํํ๋ค.
extract($_GET);
// GET ํ๋ผ๋ฏธํฐ์ addr ๊ฐ์ด ์๋ค๋ฉด addr ๋ณ์์ ๊ณต์ธ ip๋ฅผ ํ ๋นํ๋ค.
if(!$_GET['addr']) $addr = $_SERVER['REMOTE_ADDR'];
// addr ๋ณ์ ๊ฐ์ด 127.0.0.1 ๊ณผ ๊ฐ๋ค๋ฉด ๋ค์ ๋จ๊ณ ๋งํฌ๋ฅผ ์ ๊ณตํ๋ค.
if($addr == "127.0.0.1") echo "<a href=???>Next</a>";
else echo "Wrong";
?>
์ฌ๋ ๋ฒ์งธ ๋ฌธ์ ์์๋ ์ฃผ์ด์ง ์์ค์ฝ๋๋ฅผ ์์ ๊ฐ์ด ๋ถ์ํ์๋ค. ํ๋ผ๋ฏธํฐ๋ก addr
ํค ๊ฐ์ 127.0.0.1
๋ก ๋๊ฒจ์ฃผ๋ฉด extract
ํจ์์ ์ํด addr
ํค ๊ฐ์ด ๋ณ์๋ก ์ง์ ๋๊ณ , ์ด์ ์ฒซ ๋ฒ์งธ if๋ฌธ์ด ์คํ๋์ง ์๋๋ค. ๋ ๋ฒ์งธ if๋ฌธ์์ ๋ณ์ addr
๊ฐ์ ๋น๊ตํ๋๋ฐ ์ฐ๋ฆฌ๋ 127.0.0.1
์ ๋๊ฒจ์ฃผ์๊ธฐ์ ์กฐ๊ฑด์ด ์ฐธ์ด ๋๊ณ ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ ์ ์๋ค.
1
2
3
4
5
6
<?php
for($i=97;$i<=122;$i=$i+2){
$answer.=chr($i);
}
if($_GET['ans'] == $answer) echo "<a href=???.php>Next</a>";
else echo "Wrong";
์ํ ๋ฒ์งธ ๋ฌธ์ ๋ ASCII ๊ฐ 97๋ถํฐ 2์ฉ ์ฆ๊ฐํ๋ฉฐ 122๊น์ง ๋ฌธ์๋ก ๋ณํํ๋ฉฐ ๋ฌธ์๋ฅผ ๋ถ์ด๊ณ , ํด๋น ๋ฌธ์์ด์ ans
ํ๋ผ๋ฏธํฐ ๊ฐ์ผ๋ก ํฌํจํ์ฌ GET ์์ฒญ์ ๋ณด๋ด๋ฉด ๋๋ค.
1
https://webhacking.kr/challenge/bonus-6/nextt.php?ans=acegikmoqsuwy
์์ ์ฃผ์์ ๊ฐ์ด ์์ฒญํ๋ฉด ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ ์ ์๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$ip = $_SERVER['REMOTE_ADDR'];
for($i=0;$i<=strlen($ip);$i++) $ip=str_replace($i,ord($i),$ip);
$ip=str_replace(".","",$ip);
$ip=substr($ip,0,10);
$answer = $ip*2;
$answer = $ip/2;
$answer = str_replace(".","",$answer);
$f=fopen("answerip/{$answer}_{$ip}.php","w");
fwrite($f,"<?php include \"../../../config.php\"; solve(33); unlink(__FILE__); ?>");
fclose($f);
?>
๋ง์ง๋ง ๋ฌธ์ ์ธ ์ด ๋ฒ์งธ ๋ฌธ์ ๋ ๊ณต์ธ ip ๋ฌธ์์ด์ ๊ฐ๊ณตํ๊ณ ํด๋น ๋ฌธ์์ด์ ํฌํจํ ๊ฒฝ๋ก์ ์๋ php ํ์ผ์ ์ ๊ทผํ๋ฉด ๋ฌธ์ ๋ฅผ ํ ์ ์๋ค. ๋ฌธ์์ด ๊ฐ๊ณตํ๋ ๊ณผ์ ์ ๋ฐ๋ผ๊ฐ๋ ๋ฐฉ๋ฒ๋ ์๊ฒ ์ง๋ง, php ํ์ผ ํ๋๋ฅผ ์์๋ก ๋ง๋ค์ด ๋ณ์ ๊ฐ answer
๊ณผ ip
๋ฅผ ํ๋ํ์๋ค.
php ํ์ผ์ {์ต์์ ๊ฒฝ๋ก}/answerip/{$answer}_{$ip}.php
์ ์์๊ณ , url์ ์
๋ ฅํ์ฌ ์ ๊ทผํ๋ ๋ฌธ์ ๋ฅผ ํ ์ ์์๋ค.
๐ฉ old-36
1
2
While editing index.php file using vi editor in the current directory, a power outage caused the source code to disappear.
Please help me recover.
๋ฌธ์ ํ์ด์ง์ ์ ์ํ๋ฉด ์์ ๊ฐ์ ๋ฌธ๊ตฌ๋ฅผ ํ์ธํ ์ ์๋ค. vi ์๋ํฐ๋ก index.php ํ์ผ์ ์์ ํ๋ค๊ฐ ๋น์ ์ ์ข ๋ฃ๋์์ผ๋ ๋ณต๊ตฌํด๋ฌ๋ผ๋ ๊ฒ์ด๋ค. ๊ฐ์ฅ ๋จผ์ ์๊ฐ๋ ๊ฒ์ vi์ ๊ฐ์ ์๋ํฐ๋ก ํธ์ง ์์ ์์ ํ์ผ์ ์์ฑํ๋ค๋ ์ฌ์ค์ด์๋ค.๊ฒ์์ ํตํด vi ์๋ํฐ ์ฌ์ฉ ์ค์ ์์ฑ๋๋ ์์ ํ์ผ์ ์ค์ํ์ผ(swp)์ด๋ผ๋ ์ฌ์ค์ ์์๋ด์๋ค.
1
.{์๋ณธํ์ผ์ด๋ฆ}.swp
์์ ๊ฐ์ ํ์์ผ๋ก ์ค์ํ์ผ์ด ์์ฑ๋จ์ ์๊ฒ ๋์๋ค. index.php๋ฅผ ์์ ํ๋ค๊ฐ ์ข
๋ฃ๋์์ผ๋ ํด๋น ํ์ผ ์ด๋ฆ์ .index.php.swp
์ด ๋ ๊ฒ์ด๋ค. ํด๋น ํ์ผ์ ํ์ฌ ๋๋ ํฐ๋ฆฌ์ ์์ ๊ฒ์ด๋ฏ๋ก ์ฃผ์์ฐฝ์ ์
๋ ฅํ์ฌ ์ ๊ทผํด๋ณด์.
์์ ๊ฐ์ ํ์ผ์ ๋ค์ด๋ฐ์ ์ ์์๋ค. ๋ฐ์ด๋๋ฆฌ ํ์ผ์ด๋ผ ๋ฉ๋ชจ์ฅ์ด๋ ๋ค๋ฅธ ํธ์ง ํ๋ก๊ทธ๋จ์ผ๋ก๋ ์ ๋๋ก๋ ๋ด์ฉ์ ํ์ธํ ์ ์์๋ค.
๋ฆฌ๋ ์ค์ cat ๋ช ๋ น์ด๋ฅผ ํตํด ํด๋น ํ์ผ์ ์ด์ด๋ณด๋ฉด ์์ ๊ฐ์ด flag ๋ณ์์ ๋ด๊ฒจ ์๋ flag ๊ฐ์ ํ์ธํ ์ ์์๋ค. auth ํญ์์ ์ธ์ฆํ๋ฉด ๋ฌธ์ ๋ฅผ ํ ์ ์๋ค.
๐ฉ old-38
๋ฌธ์ ํ์ด์ง์ ์ ์ํ๋ฉด โLog Injectionโ์ด๋ผ๋ ๋ฌธ๊ตฌ์ ๋ก๊ทธ์ธ ํ๋ ์ ๋ ฅ ์ฐฝ ํ๋๋ฅผ ๋ฐ๊ฒฌํ ์ ์๋ค. ๋ฌด์์ ๋ฌธ์์ด์ ์ ๋ ฅํ๊ณ ๋ก๊ทธ์ธ ์๋ํ์ ์๋ฌด ์ผ๋ ์ผ์ด๋์ง ์์๋ค. ์์ฒญ๊ณผ ์๋ต ํจํท์ ํ์ธํ๋ค๊ฐ ํด๋น ํ์ด์ง์ ์ฃผ์์์ admin page๋ก ์ด๋ํ ์ ์๋ ๊ฒฝ๋ก๋ฅผ ์๊ฒ ๋์๋ค. ํด๋น ํ์ด์ง๋ก ์ด๋ํ์ ๋์ ip ์ฃผ์์ ๋ด๊ฐ ์ ๋ ฅํ ๊ฐ๋ค์ ๋ณผ ์ ์์๊ณ , ๋ค๋ฅธ ์ฌ์ฉ์์ ์ ๋ณด๊น์ง ๋ก๊ทธ๋ก ํ์ธํ ์ ์์๋ค. โadminโ์ผ๋ก ๋ก๊ทธ์ธ ํด์ผํ๋ค๋ ๋ฌธ๊ตฌ๋ฅผ ํ์ธํ ์ ์๋ค.
Log Injection์ ํตํด ๋ด ip๊ฐ admin์ผ๋ก ๋ก๊ทธ์ธ ๋์์์ ๋ํ๋ด์ผ ํ๋ ๋ฌธ์ ์ด๋ค. ์ ๋ ฅ ๊ฐ์ด ๊ทธ๋๋ก admin ํ์ด์ง์ ์ถ๊ฐ๋๋ ๊ฒ์ผ๋ก ๋ณด์, ๋ด ip๊ฐ admin์ผ๋ก ๋ก๊ทธ์ธ ํ์๋ค๋ ๋ก๊ทธ๋ฅผ ๋จ๊ธฐ๋๋ก ํด๋ณด์.
guest\n{๋ด ip ์ฃผ์}:admin
์ฒ์์๋ ์ด์ ๊ฐ์ด ์ ๋ ฅํ์ฌ ๋๊ฒจ๋ณด์๋ค.
๊ทธ๋ฌ๋ \n
๋ฌธ์๊ฐ ๊ทธ๋๋ก ์ถ๋ ฅ๋์๋๋ฐ, ์์ฒญ ์์ ๋ฐ๋ ๊ฐ์ด id=guest%5Cn118.235.15.246%3Aadmin
๋ก ์ ๋ฌ๋์์๋ค. URL ์ธ์ฝ๋ฉ๋์ด ๋์ด๊ฐ์์ ์ ์ ์๋ค. ๊ทธ๋์ ์
๋ ฅ ๊ฐ์ ๋ค์ํ๊ฒ ํ๋ฉด์ ์์ฒญ์ ํด๋ณด์๋ค.
์ ๋ ฅ | ์์ฒญ | ๊ฒฐ๊ณผ |
---|---|---|
guest\n{ip}:admin | id=guest%5Cn{ip}%3Aadmin | {ip}:guest\n{ip}:admin |
guest\r\n{ip}:admin | id=guest%5Cr%5Cn{ip}%3Aadmin | {ip}:guest\r\n{ip}:admin |
guest%0a{ip}:admin | id=guest%250aip%3Aadmin | {ip}:guest%0a{ip}:admin |
์ฌ๋ฌ ์๋ ๋์ ๋ ๊ฐ์ง ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์๋ค.
<input>
ํ๊ทธ๊ฐ ์๋<textarea>
๋ก ์ ๋ ฅ ์ฐฝ์ ๋ฐ๊พธ์ด ์ค๋ฐ๊ฟ ํค ์ ๋ ฅ ํ ์์ฒญ
์์ ๊ฐ์ด ์์ฒญํ ๋ ๋ฐ๋ ๊ฐ์ด id=guest%0D%0A118.235.15.246%3Aadmin
๋ก ์ค์ ๋๋ฉฐ ์ค๋ฐ๊ฟ ์ฒ๋ฆฌ ๋จ.
- ์์ฒญ ์์ ๋ฐ๋ ๊ฐ์
id=guest%0D%0A118.235.15.246%3Aadmin
๋ก ๋ฐ๊พธ์ด ์์ฒญ
๋ง์ฐฌ๊ฐ์ง๋ก ์ค๋ฐ๊ฟ ์ฒ๋ฆฌ๋์ด ์์ฒญ ์ ์ก ๋จ.
์ด์ admin ํ์ด์ง์ ์ ์ํด๋ณด๋ฉด ๋ฌธ์ ๋ฅผ ํ์๋ค๋ alert๋ฅผ ํ์ธํ ์ ์๋ค.
๐ฉ old-39
๋ฌธ์ ํ์ด์ง์์๋ ์ ๋ ฅ ๊ฐ์ ์ ์ถํ ์ ์๋ ์์๊ณผ ์์ค๋ฅผ ๋ณผ ์ ์๋ ๋งํฌ๊ฐ ์์๋ค. ์์์ ๋ฌธ์์ด์ ์ ์กํด๋ ์๋ฌด ์ผ๋ ์ผ์ด๋์ง ์์ผ๋ฏ๋ก ์์ค๋ฅผ ํ์ธํ์.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
// db ์ฐ๊ฒฐ
$db = dbconnect();
if($_POST['id']){
// id ๊ฐ์์ ๋ฌธ์์ด \\ ๊ฐ์ ์ ๊ฑฐ
$_POST['id'] = str_replace("\\","",$_POST['id']);
// id ๊ฐ์์ ๋ฌธ์์ด ' ๊ฐ์ '' ์ผ๋ก ๋ณ๊ฒฝ
$_POST['id'] = str_replace("'","''",$_POST['id']);
// id ๊ฐ์์ ๋ฌธ์์ด์ 0๋ฒ์งธ ์ธ๋ฑ์ค๋ถํฐ 15๊ฐ์ ๋ฌธ์๊น์ง ์ถ์ถ
$_POST['id'] = substr($_POST['id'],0,15);
// id ๊ฐ์ ์ด์ฉํ์ฌ sql ๊ตฌ๋ฌธ์ ๊ตฌ์ฑํ์ฌ ์ฟผ๋ฆฌ ์คํ
$result = mysqli_fetch_array(mysqli_query($db,"select 1 from member where length(id)<14 and id='{$_POST['id']}"));
// result[0] ๊ฐ์ด 1์ธ ๊ฒฝ์ฐ ๋ฌธ์ ํด๊ฒฐ
if($result[0] == 1){
solve(39);
}
}
?>
์์ค์ฝ๋์์ ์ค์ํ ๋ถ๋ถ์ ์์ ๊ฐ๋ค. ์ฌ๊ธฐ์ ์ ๋ ฅํ id ๊ฐ์ ๋ฌธ์์ด ๊ฐ๊ณตํ ์ดํ์ sql ๊ตฌ๋ฌธ์ ์คํํ์ฌ ์ํ๋ ๊ฐ์ ์กฐํํด์ผํจ์ ์ ์ ์๋ค. id ๊ฐ์ ํฌํจํ์ฌ ์คํํ๋ SQL ๊ตฌ๋ฌธ์ ์๋์ ๊ฐ๋ค.
1
member ํ
์ด๋ธ์์ id ๋ฌธ์์ด ๊ธธ์ด๊ฐ 14๋ณด๋ค ์๊ณ id ๊ฐ์ด ์ฌ์ฉ์๊ฐ ์
๋ ฅํ id ๊ฐ๊ณผ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด 1 ๊ฐ์ ๋ฐํํ๋ค.
select 1 from member where length(id)<14 and id='~
์ฐ์ ์ฐ๋ฆฌ๊ฐ ์
๋ ฅํ๋ id ๊ฐ์ ์ฟผ๋ฆฌ ์ค ~ ์์น์ ์
๋ ฅ๋๋ค. ์ด๋ ์
๋ ฅ๋ ๊ฐ์ด ์ฑ๊ธ ์ฟผํฐ '
๋ก ์ด์์ง๋ง ์ฑ๊ธ ์ฟผํฐ๋ก ๋ซ์ง ์์ ์จ์ ํ ๋ฌธ์์ด๋ก ์ธ์๋์ง ์์์ ์ ์ ์๋ค. ๊ทธ๋ ๋ค๊ณ '
๋ฅผ ์ฌ์ฉํ๋ฉด str_replace
ํจ์์ ์ํด ''
๋ก ๋ณ๊ฒฝ๋์ด ๋ฌธ๋ฒ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. ๊ฒ๋ค๊ฐ ๋ฌธ์์ด \\
์ ์ ๊ฑฐ ์ํค๊ธฐ ๋๋ฌธ์ \\'
์ ๊ฐ์ด ์ฌ์ฉํ์ฌ '
๋ฅผ ๋ฌธ์๋ก ์ธ์์ํฌ ์ ์๋ค. ์ฐ๋ฆฌ๋ ํ
์ด๋ธ์ ์กด์ฌํ๋ id ์ค ๊ธธ์ด๊ฐ 14๋ณด๋ค ์์ผ๋ฉฐ ๋ฌธ์์ด๋ก ์ธ์ ์ํค๊ธฐ ์ํด ์ฑ๊ธ ์ฟผํฐ ํ๋๋ฅผ ๋ค์ ๋ถ์ฌ์ผ ํ๋ค.
1
$_POST['id'] = substr($_POST['id'],0,15);
์ฐ์ , ์ฑ๊ธ ์ฟผํฐ ํ๋๋ฅผ ์
๋ ฅํ ๋ฐฉ๋ฒ์ ์์ ๊ตฌ๋ฌธ์ ์ํด ์ฐพ์ ์ ์๋ค. ์ด 15๊ฐ์ ์
๋ ฅ ๊ฐ ์ดํ์ ๊ฐ์ ์๋ฆฌ๊ธฐ ๋๋ฌธ์ 15๋ฒ์งธ ๋ฌธ์๊ฐ ์ฑ๊ธ ์ฟผํฐ๋ผ๋ฉด, str_replace
ํจ์์ ์ํด 16๋ฒ์งธ์ ์ฑ๊ธ์ฟผํฐ๊ฐ ํ๋ ์ถ๊ฐ๋ ๊ฒ์ด๊ณ , substr
ํจ์์ ์ํด ์ถ๊ฐ๋ ์ฑ๊ธ์ฟผํฐ๊ฐ ์๋ฆด ๊ฒ์ด๋ค. ์ด๋ฌ๋ฉด ์ฐ์ id='12345678901234'
์ ๊ฐ์ด ๋ฌธ์์ด๋ก ์ธ์์ํฌ ์ ์๋ค.
๊ทธ๋ฌ๋ ๋ ๋ฒ์งธ ๋ฌธ์ ๊ฐ ์๋ค. 14์๋ฆฌ์ id ๊ฐ์ ๊ฐ์ง ๋ฐ์ดํฐ๊ฐ ํ
์ด๋ธ์ ์กด์ฌํ๋ค๊ณ ๊ฐ์ ํด๋ ์ฟผ๋ฆฌ๋ฌธ์์ length(id)<14
์กฐ๊ฑด์ด ์กด์ฌํ๊ธฐ์ ์ ์ด์ ์กฐ๊ฑด์ ํญ์ False๊ฐ ๋๋ค.
https://techblog.woowahan.com/2559/
๊ทธ๋ ๋ค๋ฉด ๋ฐฉ๋ฒ์ด ์๋๊ฐ? ์์ ๋ธ๋ก๊ทธ์์ ํด๋ต์ ์ฐพ์ ์ ์์๋ค. ๊ฐ๋จํ ์์ฝํ์๋ฉด, MySQL์์๋ ๋ฌธ์์ด์ ๋น๊ตํ ๋ ํ๋์ ๋ฌธ์์ด ์ค๋ฅธ์ชฝ ๋์ ๊ณต๋ฐฑ์ด ์์ ๋ ๋ค๋ฅธ ๋ฌธ์์ด์ ๊ณต๋ฐฑ์ ์ด์ฉํด ๋ฌธ์์ด ๊ธธ์ด๋ฅผ ๋ง์ถ๊ณ ๋น๊ตํ๋ค. ๋ฐ๋ผ์ ๋ฌธ์์ด ์ค๋ฅธ์ชฝ ๋์ ๊ณต๋ฐฑ์ด ์๋๋ผ๋ ์ด๋ฅผ ์ ์ธํ ๋ฌธ์์ด๋ผ๋ฆฌ๋ง ๋น๊ตํ๋ค๋ ๋ป์ด๋ค.
๊ทธ๋ ๊ธฐ์ ์์์ id ๊ฐ + 14๋ฒ์งธ ์๋ฆฌ๊น์ง ๊ณต๋ฐฑ ์ฑ์ฐ๊ธฐ + '
๋ฅผ ์ถ๊ฐํ๋ฉด ๊ฒฐ๊ณผ์ ์ผ๋ก id ๊ฐ + '
๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด์ด ์ฟผ๋ฆฌ๋ฌธ์ ๋ค์ด๊ฐ๋ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์ id ๊ฐ์ ๋๋ถ๋ถ์ ํ
์ด๋ธ์ ์๋ admin์ผ๋ก ๊ตฌ์ฑํ๋ฉด,
1
admin '
์ด์ ๊ฐ์ด ํ์ด๋ก๋๋ฅผ ๊ตฌ์ฑํ ์ ์๊ณ , ์ ์ถํ๋ฉด ๋ฌธ์ ๋ฅผ ํ ์ ์๋ค.