Home [Wargame] Webhacking.kr Write-Ups
Post
Cancel

[Wargame] Webhacking.kr Write-Ups

๐Ÿšฉ old-01

image

๋ฌธ์ œ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋ฉด ์œ„์™€ ๊ฐ™์€ ํ™”๋ฉด์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 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 ๋ฏธ๋งŒ์ด์–ด์•ผ ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ์Œ์„ ํ™•์ธํ•˜์˜€๋‹ค.


image

๋ฉ”์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜์—ฌ ์ฟ ํ‚ค ๊ฐ’์„ ํ•ด๋‹น ๋ฒ”์œ„์˜ ์ˆ˜์— ์†ํ•˜๋Š” 3.5๋กœ ์ˆ˜์ •ํ•˜๋ฉด


image

ํ’€๋ฆฐ๋‹ค!



๐Ÿšฉ old-06

image

๋ฌธ์ œ ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€๋ฉด ์œ„์™€ ๊ฐ™์€ ํŽ˜์ด์ง€๊ฐ€ ๋ณด์ธ๋‹ค. view-source๋ฅผ ํด๋ฆญํ•ด๋ณด๋‹ˆ php์ฝ”๋“œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ํ•ต์‹ฌ ์ฝ”๋“œ๋งŒ์„ ๋ณด์ž.


image

user๋ช…์˜ ์ฟ ํ‚ค ๊ฐ’์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ์— ์œ„์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค. guest์™€ 123qwe ๋ฌธ์ž์—ด์„ ๊ฐ๊ฐ id์™€ pw๊ฐ’์œผ๋กœ ์„ค์ •ํ•œ ํ›„ ํ•ด๋‹น ๋ฌธ์ž์—ด์„ 20๋ฒˆ ๋ฐ˜๋ณตํ•˜์—ฌ base64 ์ธ์ฝ”๋”ฉํ•œ ๋‹ค์Œ์— ์ธ์ฝ”๋”ฉํ•œ ๊ฐ ๋ฌธ์ž์—ด์—์„œ 1, 2, 3, 4, 5, 6, 7, 8 ๋ฌธ์ž๋ฅผ ๊ฐ๊ฐ์˜ ๋ฌธ์ž๋กœ ์น˜ํ™˜ํ•œ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋‚˜์˜จ ๊ฒฐ๊ณผ id, pw ๋ฌธ์ž์—ด์„ ์ฟ ํ‚ค๋กœ ์„ค์ •ํ•˜๋Š” ๋™์ž‘์ด๋‹ค.


image

ํ•ด๋‹น ์›นํŽ˜์ด์ง€์˜ ์ฟ ํ‚ค๋ฅผ ์‚ดํŽด๋ณด๋‹ˆ base64๋กœ ์ธ์ฝ”๋”ฉ ๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š” ๋ฌธ์ž์—ด์ด value ๊ฐ’์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ์—ˆ๋‹ค. HTML ์ฝ”๋“œ ํ•˜๋‹จ์˜ php ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž.


image

์ฝ”๋“œ์—์„œ ํ•„์š”์—†๋Š” ๋ถ€๋ถ„์€ ์ง€์› ๋‹ค. ํ•ด๋‹น ์ฝ”๋“œ๋Š” user, password name์˜ ์ฟ ํ‚ค ๊ฐ’์„ ๊ฐ€์ ธ์™€ ์œ„์—์„œ ์ง„ํ–‰ํ•œ ๋ฌธ์ž์—ด ์น˜ํ™˜์˜ ์—ญ์„ ์ˆ˜ํ–‰ํ•˜๊ณ , base64 ๋ฌธ์ž์—ด์„ 20๋ฒˆ ๋ฐ˜๋ณต decodeํ•˜์—ฌ ๊ฒฐ๊ณผ ๋ฌธ์ž์—ด์ด id์™€ passwword๊ฐ€ ๊ฐ๊ฐ admin๊ณผ nimda๋ผ๋Š” ๋ฌธ์ž์—ด๊ณผ ์ผ์น˜ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ’€๋ฆฌ๋Š” ๋“ฏํ•˜๋‹ค. ๊ทธ๋Ÿผ ์šฐ๋ฆฌ๋Š” admin๊ณผ nimda๋ฅผ ์—ญ์œผ๋กœ ์น˜ํ™˜ํ•˜๊ณ , base64 decode๋ฅผ 20๋ฒˆ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋‚˜์˜จ ๋ฌธ์ž์—ด์„ ์ฟ ํ‚ค๋กœ ๊ฐ๊ฐ ์„ค์ •ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ’€๋ฆฌ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋‹จ์ˆœ ๋ฐ˜๋ณต ๊ณผ์ •์ด๋‹ˆ Python์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์งœ๋ณด์ž.


1
import base64

base64 ์ธ์ฝ”๋”ฉ๊ณผ ๋””์ฝ”๋”ฉ ๊ณผ์ •์ด ํ•„์š”ํ•˜๋ฏ€๋กœ python ๋‚ด์žฅ ๋ชจ๋“ˆ base64๋ฅผ ์‚ฌ์šฉํ•˜์ž.


image

์—ญ์œผ๋กœ ์น˜ํ™˜ํ•˜๋Š” ๊ณผ์ •์€ ํ•จ์ˆ˜๋กœ ๊ตฌํ˜„ํ•˜์—ฌ ๋ฌธ์ž์—ด id์™€ pw๋ฅผ ์—ญ์œผ๋กœ ์น˜ํ™˜ํ•œ ๋ฌธ์ž์—ด์„ ์‰ฝ๊ฒŒ ๊ตฌํ•ด๋‚ผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.


image

๊ทธ๋ฆฌ๊ณ  ๊ฐ๊ฐ ์œ„์—์„œ ์„ค๋ช…ํ•˜์˜€๋˜ ๊ณผ์ •๋Œ€๋กœ ์ฝ”๋“œ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์ถœ๋ ฅํ•œ ๊ฐ’์„ ์ฟ ํ‚ค๋กœ ์„ค์ •ํ•˜๋‹ˆ


image

ํ’€๋ ธ๋‹ค!



๐Ÿšฉ old-10

image

๋ฌธ์ œ ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€๋‹ˆ ํŠธ๋ž™์„ ์—ฐ์ƒํ•˜๊ฒŒ ํ•˜๋Š” ๊ทธ๋ฆผ์ด ์žˆ์—ˆ๋‹ค. ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋จผ์ € ์‚ดํŽด๋ณด์•˜๋‹ค.


image

๋‹ค๋ฅธ ๋ถ€๋ถ„์€ ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š” ํƒœ๊ทธ๋“ค์ด ์กด์žฌํ•˜์˜€๊ณ , ํŠธ๋ž™ ์œ„์˜ O๋ฅผ ๊ทธ๋ฆฌ๋Š” ํƒœ๊ทธ๋Š” onclick, onmouseover, onmouseout ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๋‹ค. onmouseover๊ณผ onmouseout ์†์„ฑ์€ O ๊ธ€์ž์™€ yOu ๊ธ€์ž๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์—ญํ• ์„ ํ•˜์˜€๊ณ , onclick ์†์„ฑ์€ ํด๋ฆญ ์‹œ์— 1px์”ฉ ๊ธ€์ž๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ํด๋ฆญํ•ด๋ณด๋ฉด


image

์กฐ๊ธˆ์”ฉ ์ด๋™ํ•จ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ, onclick ์†์„ฑ์—์„œ ํ•ด๋‹น ๊ธ€์ž ์Šคํƒ€์ผ ์†์„ฑ์˜ left ๊ฐ’์ด 1600px์ด ๋˜๋ฉด ํŠน์ • ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•จ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.


image

๊ทธ๋ž˜์„œ ํ•ด๋‹น ํƒœ๊ทธ์˜ left ๊ฐ’์„ 1599px๋กœ ์„ค์ •ํ•˜๊ณ  ๊ธ€์ž๋ฅผ ํ•œ ๋ฒˆ ํด๋ฆญํ•˜๋‹ˆ 1600px์ด ๋˜๋ฉด์„œ


image

๋ฌธ์ œ๊ฐ€ ํ’€๋ ธ๋‹ค!



๐Ÿšฉ old-11

image

๋ฌธ์ œ ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€๋ฉด ์œ„์™€ ๊ฐ™์€ ํ™”๋ฉด์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 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 ๋ฐฉ์‹์œผ๋กœ ๋„˜๊ฒจ์ฃผ๋ฉด,


image

ํ’€๋ฆฐ๋‹ค!



๐Ÿšฉ old-14

image

๋ฌธ์ œ ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€๋ณด๋‹ˆ input ์ฐฝ๊ณผ check ๋ฒ„ํŠผ๋งŒ์ด ๋†“์—ฌ์žˆ์—ˆ๋‹ค. ์†Œ์Šค์ฝ”๋“œ ๋จผ์ € ํ™•์ธํ•ด๋ณด์•˜๋‹ค.


image

form ํƒœ๊ทธ ๋‚ด์— input ํƒœ๊ทธ ๋‘ ๊ฐœ๊ฐ€ ์žˆ์—ˆ๊ณ  ๊ทธ ์ค‘ ๋ฒ„ํŠผ์— ck() ํ•จ์ˆ˜๊ฐ€ onClilck ์†์„ฑ์œผ๋กœ ์ง€์ •๋˜์–ด ์žˆ์—ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ ๊ตฌ๋ฌธ์— ck() ํ•จ์ˆ˜์˜ ๋‚ด์šฉ์ด ์žˆ์—ˆ๊ณ , ์…‹ ์งธ์ค„๊นŒ์ง€๋Š” ๋Œ€๋žต ๋ธŒ๋ผ์šฐ์ €์˜ URL์˜ โ€œ.krโ€ ๋ฌธ์ž์—ด์˜ ์ธ๋ฑ์Šค ๊ฐ’์— 30์„ ๊ณฑํ•œ ๊ฐ’์„ ul ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ์ด๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์˜€๋‹ค.


image

ul ๊ฐ’์„ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด ์ฝ˜์†” ์ฐฝ์—์„œ ๊ตฌ๋ฌธ์„ ์‹คํ–‰ํ•˜์—ฌ ๋‚˜์˜จ ์ˆซ์ž ๊ฐ’์„ ์ž…๋ ฅํ•˜๋‹ˆ

ํ’€๋ ธ๋‹ค!



๐Ÿšฉ old-15

image

๋ฌธ์ œ ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€๋ฉด ์œ„์™€ ๊ฐ™์€ ๋ฌธ๊ตฌ์™€ ํ•จ๊ป˜ ์‚ฌ์ดํŠธ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ณ  ํ™•์ธ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด webhacking.kr ๋ฉ”์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ๋‹ค.

burp suite๋ฅผ ์ด์šฉํ•ด ์ ‘์†ํ•  ๋•Œ์˜ ํŒจํ‚ท์„ ์žก์•„๋ณด์ž.


image

์š”์ฒญ์— ๋”ฐ๋ผ ์‘๋‹ต ํŒจํ‚ท์„ ํ™•์ธํ•˜๋ฉด alert ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์ดํ›„์— location.href='/'; ๊ตฌ๋ฌธ์— ๋”ฐ๋ผ ๋ฉ”์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.


image

๊ทธ๋Ÿฌ๋‚˜ ํ”Œ๋ž˜๊ทธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋Š” a ํƒœ๊ทธ๊ฐ€ ์ดํ›„์— ์‚ฝ์ž…๋˜๋ฏ€๋กœ, ์œ„์ฒ˜๋Ÿผ ๋ฉ”์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋Š” ๊ตฌ๋ฌธ์„ ์ฃผ์„์ฒ˜๋ฆฌํ•˜์—ฌ ์‘๋‹ต ํŒจํ‚ท์„ ๋ฐ›์œผ๋ฉด


image

a ํƒœ๊ทธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋ฅผ ๋ˆ„๋ฅด๋ฉด ํ”Œ๋ž˜๊ทธ๋ฅผ ํš๋“ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๋‹ค.



๐Ÿšฉ old-16

image

๋ฌธ์ œ ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€๋‹ˆ ์ƒ‰์„ ๊ฐ€์ง„ ์•„์Šคํƒ€๋ฆฌ์Šคํฌ(*)๊ฐ€ ๋ณด์˜€๋‹ค. ์†Œ์Šค์ฝ”๋“œ๋ถ€ํ„ฐ ๋ณด์•˜๋‹ค.


image

body ํƒœ๊ทธ์—๋Š” font ํƒœ๊ทธ 4๊ฐœ ์‚ฌ์ด์— script๋ฌธ์ด ๋“ค์–ด์žˆ์—ˆ๋‹ค. body ํƒœ๊ทธ์—๋Š” ํ‚ค๋ณด๋“œ ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ์— keyCode ๊ฐ’์„ mv() ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ์ „๋‹ฌํ•˜๊ณ  ์žˆ๋‹ค. mv() ํ•จ์ˆ˜ ๋‚ด์—์„œ๋Š” kk() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์ด ํ•จ์ˆ˜๋Š” ์ƒ์„ฑ๋œ ๋‚œ์ˆ˜๋กœ 6์ž๋ฆฌ ์ž์—ฐ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ํ•ด๋‹น ์ˆซ์ž์— ํ•ด๋‹นํ•˜๋Š” ์ƒ‰์ƒ ์ฝ”๋“œ์˜ ์ƒ‰์„ ๊ฐ€์ง„ *๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์žˆ๋‹ค.


image

ํ‚ค๋ณด๋“œ๋ฅผ ๋ง‰ ๋ˆ„๋ฅด๋ฉด ์ด๋Ÿฐ ํ™”๋ฉด์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด ๋™์ž‘์€ ์ค‘์š”ํ•˜์ง€ ์•Š๊ณ , mv() ํ•จ์ˆ˜ ๋‚ด์˜ ๋งˆ์ง€๋ง‰ if๋ฌธ์€ keyCode ๊ฐ’์ด 124์™€ ๊ฐ™์œผ๋ฉด php ๋™์ž‘์„ ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ASCII code 124๋ฒˆ์€ | ๋ฌธ์ž๋ฅผ ์˜๋ฏธํ•˜๊ธฐ์— ํ‚ค๋ณด๋“œ๋กœ ์ž…๋ ฅํ•˜๋ฉด


image

ํ’€๋ ธ๋‹ค !



๐Ÿšฉ old-17

image

๋ฌธ์ œ ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€๋‹ˆ 14๋ฒˆ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ž…๋ ฅ ์ฐฝ๊ณผ check ๋ฒ„ํŠผ์ด ์žˆ์—ˆ๋‹ค. ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋จผ์ € ๋ณด์•˜๋‹ค.


image

14๋ฒˆ๊ณผ ์œ ์‚ฌํ•œ ๋ฌธ์ œ์ž„์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๊ณ  ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ฝ˜์†” ์ฐฝ์—์„œ unlock ๋ณ€์ˆ˜๋ฅผ ๊ณ„์‚ฐ ํ•ด๋ณด์•˜๋‹ค.


image

์—ฐ์‚ฐํ•˜์—ฌ ๋‚˜์˜จ ๊ฒฐ๊ณผ๋ฅผ input์— ์ž…๋ ฅํ•˜๊ณ  ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด


image

ํ’€๋ ธ๋‹ค!



๐Ÿšฉ old-18

image

๋ฌธ์ œ ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€๋ฉด ์œ„์™€ ๊ฐ™์€ ํ™”๋ฉด์ด ๋‚˜์˜จ๋‹ค. ์ œ๋ชฉ์— ํฌ๊ฒŒ ์“ฐ์—ฌ์žˆ๋“ฏ์ด SQL Injection์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™๋‹ค. view-source๋ฅผ ๋ˆŒ๋Ÿฌ๋ณด์ž.


image

ํ™ˆํŽ˜์ด์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” 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์„ ํ†ตํ•ด ์š”์ฒญํ•˜๋ฉด,


image

ํ’€๋ ธ๋‹ค!



๐Ÿšฉ old-19

๋ฌธ์ œ ํŽ˜์ด์ง€์— ์ ‘์†ํ•˜๋ฉด id ์ž…๋ ฅ ๊ฐ’์— โ€˜adminโ€™์ด๋ผ๋Š” ๋ฌธ์ž์—ด์ด ์ฑ„์›Œ์ ธ์žˆ๊ณ  ์ œ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ํผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. admin์œผ๋กœ ๋กœ๊ทธ์ธ ์‹œ๋„ํ•˜๋ฉด admin์ด ์•„๋‹ˆ๋ผ๋Š” ๋ฌธ๊ตฌ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ , ๋‹ค๋ฅธ id๋กœ ๋กœ๊ทธ์ธ์„ ์‹œ๋„ํ•˜๋ฉด ํ•ด๋‹น ์•„์ด๋””๋กœ ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ๊ณ , cookie ๊ฐ’์ด ์„ค์ •๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


image

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ id๋ฅผ ์กฐํšŒํ•˜๋Š” ์‹œ์Šคํ…œ์ผ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์— SQL injection์„ ์‹œ๋„ํ•˜์˜€๋‹ค. ์ž…๋ ฅ ๊ฐ’ ๊ธธ์ด ์ œํ•œ์ด ์žˆ์–ด ์š”์ฒญ ํŒจํ‚ท์„ ์ˆ˜์ •ํ•˜์—ฌ ์ „์†กํ•˜์˜€๋‹ค. ๋ฌธ์ž์—ด์€ admin'+or+1=1--๋กœ ์„ค์ •ํ•˜์—ฌ ์ „์†กํ•˜์˜€๋Š”๋ฐ ์œ„์™€ ๊ฐ™์ด ๋กœ๊ทธ์ธ์ด ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ด๋•Œ, -- ๋ฌธ์ž๊ฐ€ ์‚ฌ๋ผ์ง„ ๊ฒƒ์œผ๋กœ ๋ณด์•„ ์ฃผ์„์œผ๋กœ ์ธ์‹ํ•˜๋Š” ๋“ฏ ํ•˜์˜€๋‹ค.


๊ทธ๋ž˜์„œ ์ž…๋ ฅ ๊ฐ’์„ admin'--์œผ๋กœ ๋ฐ”๊พธ์–ด ๋กœ๊ทธ์ธ์„ ์‹œ๋„ํ•˜์ž, ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค.



๐Ÿšฉ old-20

image

๋ฌธ์ œ ํŽ˜์ด์ง€์—์„œ๋Š” ์œ„์™€ ๊ฐ™์€ ๊ตฌ์„ฑ์ด์—ˆ๊ณ  ์šฐ์„  ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋ณด์•˜๋‹ค.


image

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

image

driver.Chrome() ํ•จ์ˆ˜๋Š” ๋ฌด์Šจ ์ด์œ ์ธ์ง€ ์ž๊พธ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์„œ ChromeDriverManager๋ฅผ ์ด์šฉํ•˜์—ฌ ํฌ๋กฌ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์…€๋ ˆ๋‹ˆ์›€ ๋“œ๋ผ์ด๋ฒ„๋กœ ์„ค์ •ํ•˜์˜€๋‹ค.


image

webhacking.kr ์‚ฌ์ดํŠธ๋Š” ๋กœ๊ทธ์ธ ์ƒํƒœ์—์„œ ๋ฌธ์ œ ์‚ฌ์ดํŠธ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž์—๊ฒŒ id, password๋ฅผ ์ž…๋ ฅ ๋ฐ›๊ณ 


image

๋กœ๊ทธ์ธ ์ฐฝ์˜ ๊ฐ ํƒœ๊ทธ์˜ XPATH๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ id, password๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ๋กœ๊ทธ์ธ์„ ํ•˜๋„๋ก ํ•˜์˜€๋‹ค. ์ฒ˜์Œ์—๋Š” find_element_by_xpath() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์˜€์œผ๋‚˜ DeprecationWarning ๋ฌธ๊ตฌ๊ฐ€ ์ถœ๋ ฅ๋˜์–ด find_element() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์˜€๋‹ค.


image

๋กœ๊ทธ์ธ ์„ธ์…˜์ด ์œ ์ง€๋œ ์ƒํƒœ์—์„œ ๋ฌธ์ œ ํŽ˜์ด์ง€๋กœ ์ด๋™


image

๋ฌธ์ œ ํŽ˜์ด์ง€๋กœ ์ด๋™ ํ›„ nickname๊ณผ comment์—๋Š” ์•„๋ฌด ๋ฌธ์ž๋ฅผ ์ฑ„์›Œ๋„ฃ๊ณ , captcha์˜ value ์†์„ฑ ๊ฐ’์„ ๊ฐ€์ ธ์™€ captcha๋กœ ์ž…๋ ฅํ•˜๊ณ , submit ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋„๋ก ํ•˜์˜€๋‹ค.


image

์‹คํ–‰ ์‹œํ‚ค๋‹ˆ ํ’€๋ ธ๋‹ค !



๐Ÿšฉ 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 ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ํ™•์ธํ•ด๋ณด์•˜๋‹ค.

image

image


๊ทธ๋Ÿฌ๋ฏ€๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ ์‹œ์— ์กฐ์ž‘ํ•  ์ˆ˜ ์—†๋Š” $_SERVER ๋ฐฐ์—ด ๋Œ€์‹ ์— $_COOKIE ๊ฐ’์„ ์ด์šฉํ•˜์—ฌ $REMOTE_ADDR์„ ์ „์†กํ•˜๋ฉด ๊ทธ ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•„ํ„ฐ๋ง์„ ์šฐํšŒํ•˜์—ฌ ๋ฌธ์ž์—ด โ€˜127.0.0.1โ€™์„ ๋งŒ๋“ค์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž์—ด 112277...00...00...1์„ ์š”์ฒญ cookie ๊ฐ’์— ํฌํ•จํ•˜์—ฌ ์š”์ฒญ์„ ๋ณด๋‚ด๋ณด์ž.


image

์œ„์™€ ๊ฐ™์ด ์ฟ ํ‚ค ๊ฐ’์„ ํฌํ•จํ•˜์—ฌ ์š”์ฒญ์„ ์ „์†กํ•˜๋ฉด


image

ํด๋ผ์ด์–ธํŠธ 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 ์ธ์ฝ”๋”ฉ๋„ ํ•ด๋ณด์•˜์ง€๋งŒ ๋ฌธ์ œ๋Š” ํ’€๋ฆฌ์ง€ ์•Š์•˜๋‹ค.


image

์ด๋•Œ, 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

image

18๋ฒˆ ๋ฌธ์ œ์™€ ๊ฐ™์€ SQL Injection ๋ฌธ์ œ์ด๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์†Œ์Šค์ฝ”๋“œ ๋‚ด์—์„œ ์ค‘์š”ํ•œ ๋ถ€๋ถ„๋งŒ์„ ๋ณด์ž.


image

๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ •๊ทœํ‘œํ˜„์‹์„ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ๊ฒ€์‚ฌํ•˜๊ณ  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๋กœ ์š”์ฒญํ•˜๋ฉด,

image

ํ’€๋ฆฐ๋‹ค!



๐Ÿšฉ old-32

image

๋ฌธ์ œ ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€๋‹ˆ 1500์—ฌ๊ฐœ์˜ Webhacking.kr ์œ ์ €์˜ ๋ชฉ๋ก์ด ์žˆ์—ˆ๊ณ  ์œ ์ €๋ณ„๋กœ hit ์ ์ˆ˜๊ฐ€ ์žˆ์—ˆ๋‹ค. ์œ ์ € ํ•œ ๋ช…์„ ํด๋ฆญํ•˜๋‹ˆ ๊ทธ์˜ hit์ด ๋Š˜์–ด๋‚œ ๊ฒƒ์œผ๋กœ ๋ณด์•„ 100๋ฒˆ ํด๋ฆญํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๋กœ ๋ณด์˜€๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•œ ๋ฒˆ hitํ•œ ํ›„๋กœ๋Š”


image

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ๊ตฌ์™€ ํ•จ๊ป˜ hit๋ฅผ ํ•  ์ˆ˜ ์—†์—ˆ๋‹ค.


image

cookie๋ฅผ ํ™•์ธํ•ด๋ณธ ๊ฒฐ๊ณผ vote_check๋ช…์˜ ๊ฐ’์œผ๋กœ ok๊ฐ€ ์„ธํŒ…๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๊ณ  ์ด๋ฅผ ์‚ญ์ œํ•˜๋‹ˆ hit ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. 100๋ฒˆ ๋ฐ˜๋ณต์„ ์œ„ํ•ด์„œ๋Š” ์ž๋™ํ™”๊ฐ€ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์•„ ํŒŒ์ด์ฌ์˜ selenium ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค.


image

Webhacking.kr์€ ๋กœ๊ทธ์ธ์„ ํ•ด์•ผ ๋ฌธ์ œ ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— selenium์—์„œ ๋กœ๊ทธ์ธ ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค. ํ•ด๋‹น ๊ณผ์ •์€ Challenge(old) - 32 ์—์„œ ๋‹ค๋ฃจ์—ˆ๋‹ค. ๋ฌธ์ œ ํŽ˜์ด์ง€๋กœ ๋„˜์–ด๊ฐ”๋‹ค.


image

๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด 100๋ฒˆ hit๋ฅผ ํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜์˜€๊ณ ,


image

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())
1701696200c4f184e9285c85f721c80625538d0096
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";
?>

๋‹ค์„ฏ ๋ฒˆ์งธ ๋ฌธ์ œ๋Š” ๋‹ค์Œ ์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œ์ผœ ์š”์ฒญ์„ ๋ณด๋‚ด์•ผํ•œ๋‹ค.

  1. imget ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํฌํ•จ์‹œ์ผœ GET ์š”์ฒญ
  2. impost ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜์—ฌ POST ์š”์ฒญ
  3. imcookie ์ฟ ํ‚ค ๊ฐ’์„ ํฌํ•จ์‹œ์ผœ ์š”์ฒญ


1
2
3
4
<form action="md555.php" method="post">
  <input name="impost">
  <input type="submit">
</form>

์šฐ์„  2๋ฒˆ ์กฐ๊ฑด์„ ์œ„ํ•ด ์œ„์™€ ๊ฐ™์€ ์‘๋‹ต ํŒจํ‚ท์— form์„ ์‚ฝ์ž…ํ•˜์˜€๋‹ค.


image

๊ทธ ๋‹ค์Œ์œผ๋กœ 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']}";
?>

์—ฌ์„ฏ ๋ฒˆ์งธ ๋ฌธ์ œ๋Š” ๋‹ค์Œ ์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œํ‚ค๋ฉด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. test ์ฟ ๊ธฐ ๊ฐ’์œผ๋กœ ๊ณต์ธ ip ๊ฐ’์„ md5 ์•”ํ˜ธํ™”ํ•œ ๊ฐ’์„ ํฌํ•จ์‹œํ‚จ๋‹ค.
  2. ๋ฐ”๋”” ๊ฐ’์— 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๋ฅผ ํ†ตํ•ด ์–ป์€ ๊ฐ’์„ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ „๋‹ฌํ•˜์ž.


image

์ด๋•Œ ์š”์ฒญ ํŒจํ‚ท์— 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์— ์ž…๋ ฅํ•˜์—ฌ ์ ‘๊ทผํ•˜๋‹ˆ ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ์—ˆ๋‹ค.


image



๐Ÿšฉ 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์ด ๋  ๊ฒƒ์ด๋‹ค. ํ•ด๋‹น ํŒŒ์ผ์€ ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์„ ๊ฒƒ์ด๋ฏ€๋กœ ์ฃผ์†Œ์ฐฝ์— ์ž…๋ ฅํ•˜์—ฌ ์ ‘๊ทผํ•ด๋ณด์ž.


image

์œ„์™€ ๊ฐ™์€ ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์ด๋ผ ๋ฉ”๋ชจ์žฅ์ด๋‚˜ ๋‹ค๋ฅธ ํŽธ์ง‘ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ๋Š” ์ œ๋Œ€๋กœ๋œ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์—†์—ˆ๋‹ค.


image

๋ฆฌ๋ˆ…์Šค์˜ cat ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ํŒŒ์ผ์„ ์—ด์–ด๋ณด๋ฉด ์œ„์™€ ๊ฐ™์ด flag ๋ณ€์ˆ˜์— ๋‹ด๊ฒจ ์žˆ๋Š” flag ๊ฐ’์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. auth ํƒญ์—์„œ ์ธ์ฆํ•˜๋ฉด ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๋‹ค.



๐Ÿšฉ old-38

image

๋ฌธ์ œ ํŽ˜์ด์ง€์— ์ ‘์†ํ•˜๋ฉด โ€˜Log Injectionโ€™์ด๋ผ๋Š” ๋ฌธ๊ตฌ์™€ ๋กœ๊ทธ์ธ ํ•˜๋Š” ์ž…๋ ฅ ์ฐฝ ํ•˜๋‚˜๋ฅผ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฌด์ž‘์œ„ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅํ•˜๊ณ  ๋กœ๊ทธ์ธ ์‹œ๋„ํ•˜์ž ์•„๋ฌด ์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์•˜๋‹ค. ์š”์ฒญ๊ณผ ์‘๋‹ต ํŒจํ‚ท์„ ํ™•์ธํ•˜๋‹ค๊ฐ€ ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ์ฃผ์„์—์„œ admin page๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ๋ฅผ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ํ•ด๋‹น ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜์ž ๋‚˜์˜ ip ์ฃผ์†Œ์™€ ๋‚ด๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’๋“ค์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๊ณ , ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๊นŒ์ง€ ๋กœ๊ทธ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. โ€˜adminโ€™์œผ๋กœ ๋กœ๊ทธ์ธ ํ•ด์•ผํ•œ๋‹ค๋Š” ๋ฌธ๊ตฌ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


Log Injection์„ ํ†ตํ•ด ๋‚ด ip๊ฐ€ admin์œผ๋กœ ๋กœ๊ทธ์ธ ๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋‚ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์ž…๋ ฅ ๊ฐ’์ด ๊ทธ๋Œ€๋กœ admin ํŽ˜์ด์ง€์— ์ถ”๊ฐ€๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์•„, ๋‚ด ip๊ฐ€ admin์œผ๋กœ ๋กœ๊ทธ์ธ ํ•˜์˜€๋‹ค๋Š” ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธฐ๋„๋ก ํ•ด๋ณด์ž.


guest\n{๋‚ด ip ์ฃผ์†Œ}:admin

์ฒ˜์Œ์—๋Š” ์ด์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜์—ฌ ๋„˜๊ฒจ๋ณด์•˜๋‹ค.


image

๊ทธ๋Ÿฌ๋‚˜ \n ๋ฌธ์ž๊ฐ€ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ๋˜์—ˆ๋Š”๋ฐ, ์š”์ฒญ ์‹œ์— ๋ฐ”๋”” ๊ฐ’์ด id=guest%5Cn118.235.15.246%3Aadmin๋กœ ์ „๋‹ฌ๋˜์—ˆ์—ˆ๋‹ค. URL ์ธ์ฝ”๋”ฉ๋˜์–ด ๋„˜์–ด๊ฐ”์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ž…๋ ฅ ๊ฐ’์„ ๋‹ค์–‘ํ•˜๊ฒŒ ํ•˜๋ฉด์„œ ์š”์ฒญ์„ ํ•ด๋ณด์•˜๋‹ค.

์ž…๋ ฅ์š”์ฒญ๊ฒฐ๊ณผ
guest\n{ip}:adminid=guest%5Cn{ip}%3Aadmin{ip}:guest\n{ip}:admin
guest\r\n{ip}:adminid=guest%5Cr%5Cn{ip}%3Aadmin{ip}:guest\r\n{ip}:admin
guest%0a{ip}:adminid=guest%250aip%3Aadmin{ip}:guest%0a{ip}:admin


์—ฌ๋Ÿฌ ์‹œ๋„ ๋์— ๋‘ ๊ฐ€์ง€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์—ˆ๋‹ค.


  1. <input> ํƒœ๊ทธ๊ฐ€ ์•„๋‹Œ <textarea>๋กœ ์ž…๋ ฅ ์ฐฝ์„ ๋ฐ”๊พธ์–ด ์ค„๋ฐ”๊ฟˆ ํ‚ค ์ž…๋ ฅ ํ›„ ์š”์ฒญ

image

์œ„์™€ ๊ฐ™์ด ์š”์ฒญํ•  ๋•Œ ๋ฐ”๋”” ๊ฐ’์ด id=guest%0D%0A118.235.15.246%3Aadmin๋กœ ์„ค์ •๋˜๋ฉฐ ์ค„๋ฐ”๊ฟˆ ์ฒ˜๋ฆฌ ๋จ.


  1. ์š”์ฒญ ์‹œ์— ๋ฐ”๋”” ๊ฐ’์„ id=guest%0D%0A118.235.15.246%3Aadmin๋กœ ๋ฐ”๊พธ์–ด ์š”์ฒญ

image

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ค„๋ฐ”๊ฟˆ ์ฒ˜๋ฆฌ๋˜์–ด ์š”์ฒญ ์ „์†ก ๋จ.


์ด์ œ 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         '

์ด์™€ ๊ฐ™์ด ํŽ˜์ด๋กœ๋“œ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๊ณ , ์ œ์ถœํ•˜๋ฉด ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๋‹ค.

[Study] Content Security Policy

๐Ÿšฉ์ œ 1ํšŒ IxC CTF ์šด์˜ ํ›„๊ธฐ๐Ÿšฉ