DreamHack - phpreg ํ์ด
์ฒซ ๋ฒ์งธ ๋ฌธ์ : ์กฐ๊ฑด์ ๋ง์กฑํ๋ name ์ฐพ๊ธฐ
์๋ ์ฝ๋๋ฅผ ํ์ธํ๋ฉด ๋จ๋ฒ์ name์ "dnyang0310"๊ฐ ์ ๋ต์ธ ๊ฑธ ์ ์ ์๋ค.
if ($name === "dnyang0310" && $pw === "d4y0r50ng+1+13")
ํ์ง๋ง ์๋ preg_replace์ ์ํด "nyang"์ด ๊ณต๋ฐฑ์ผ๋ก ์นํ๋๋ค.
$name = preg_replace("/nyang/i", "", $input_name);
๋จ์ด๊ฐ ๊ณต๋ฐฑ์ผ๋ก ์นํ๋๋ ๊ฒ์ ์๋์ ๊ฐ์ด ์ฝ๊ฒ ์ฐํ ๊ฐ๋ฅํ๋ค.
dnnyangyang0310 --> dn yang0310 --> dnyang0310
๋ ๋ฒ์งธ ๋ฌธ์ : ์กฐ๊ฑด์ ๋ง์กฑํ๋ password ์ฐพ๊ธฐ
์๋ ์กฐ๊ฑด์์ผ๋ก ์ธํด ํจ์ค์๋์ ์ํ๋ฒณ์ด ํฌํจํ ์๊ฐ ์๋ค.
// pw filtering
if (preg_match("/[a-zA-Z]/", $input_pw)) {
echo "alphabet in the pw :(";
}
ํ์ง๋ง ์๋์ preg_replace๋ฅผ ์ด์ฉํด ํจ์ค์๋์ ํ์ํ ๋ฌธ์ฅ์ ํฌํจํ ์ ์๋ค.
$pw = preg_replace("/\d*\@\d{2,3}(31)+[^0-8]\!/", "d4y0r50ng", $input_pw);
์ ๊ทํํ์ /\d*\@\d{2,3}(31)+[^0-8]\!/์ ๋ง์กฑํ๋ ๊ฐ์ผ๋ก๋ @112319!๊ฐ ์๋ค.
์ต์ข ํจ์ค์๋ ๊ฐ์ @112319!+1+13๊ฐ ๋๋ค.
์ธ ๋ฒ์งธ ๋ฌธ์ : flag.txt ์ฝ์ด์ค๊ธฐ
๋ฌธ์ ์์ ํ๋๊ทธ๋ ../dream/flag.txt์ ์์นํ๋ค๊ณ ํ์ผ๋ ์๋ ์กฐ๊ฑด์ ๋๋ฌธ์ flag๋ฅผ ํฌํจํ์ง ๋ชปํ๋ค.
else if (preg_match("/flag/i", $cmd)) {
echo "<pre>Error!</pre>";
}
๋๋ ์์ผ๋์นด๋(*)๋ฅผ ์ฌ์ฉํด ์์คํ ๋ด์ flag ๊ฐ์ ์ฝ์ด์ฌ ์ ์์๋ค.
cat ../dream/*.txt
๋์์ด ๋ ๋๊ตฌ