๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸดCTF/DreamHack

DreamHack - phpreg ํ’€์ด

by Janger 2023. 9. 8.
728x90
๋ฐ˜์‘ํ˜•

์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ : ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š” 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

๋„์›€์ด ๋œ ๋„๊ตฌ

https://regexr.com/

728x90
๋ฐ˜์‘ํ˜•

'๐ŸดCTF > DreamHack' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

DreamHack - [wargame.kr] crack crack crack it ํ’€์ด  (0) 2023.09.09
DreamHack - broken-png ํ’€์ด  (0) 2023.09.08
DreamHack - out_of_boundary ํ’€์ด  (0) 2023.09.08
DreamHack - Guest book v0.2 ํ’€์ด  (0) 2023.09.07
DreamHack - Guest book ํ’€์ด  (0) 2023.09.07