https://dreamhack.io/wargame/challenges/873
๋ฌธ์ ์ค๋ช
php๋ก ์์ฑ๋ ํ์ด์ง์ ๋๋ค.
์๋ง์ Nickname๊ณผ Password๋ฅผ ์ ๋ ฅํ๋ฉด Step 2๋ก ๋์ด๊ฐ ์ ์์ต๋๋ค.
Step 2์์ system() ํจ์๋ฅผ ์ด์ฉํ์ฌ ํ๋๊ทธ๋ฅผ ํ๋ํ์ธ์.
ํ๋๊ทธ๋ ../dream/flag.txt์ ์์นํฉ๋๋ค.
ํ๋๊ทธ์ ํ์์ DH{…} ์ ๋๋ค.
ํ์ด
// POST request
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$input_name = $_POST["input1"] ? $_POST["input1"] : "";
$input_pw = $_POST["input2"] ? $_POST["input2"] : "";
// pw filtering
if (preg_match("/[a-zA-Z]/", $input_pw)) {
echo "alphabet in the pw :(";
}
else{
$name = preg_replace("/nyang/i", "", $input_name);
$pw = preg_replace("/\d*\@\d{2,3}(31)+[^0-8\"]\!/", "d4y0r50ng", $input_pw);
if ($name === "dnyang0310" && $pw === "d4y0r50ng+1+13") {
echo '<h4>Step 2 : Almost done...</h4><div class="door_box"><div class="door_black"></div><div class="door"><div class="door_cir"></div></div></div>';
$cmd = $_POST["cmd"] ? $_POST["cmd"] : "";
if ($cmd === "") {
echo '
<p><form method="post" action="/step2.php">
<input type="hidden" name="input1" value="'.$input_name.'">
<input type="hidden" name="input2" value="'.$input_pw.'">
<input type="text" placeholder="Command" name="cmd">
<input type="submit" value="์ ์ถ"><br/><br/>
</form></p>
';
}
// cmd filtering
else if (preg_match("/flag/i", $cmd)) {
echo "<pre>Error!</pre>";
}
else{
echo "<pre>--Output--\n";
system($cmd);
echo "</pre>";
}
}
else{
echo "Wrong nickname or pw";
}
}
}
// GET request
else{
echo "Not GET request";
}
index.php ๋ ๋ณ ๋ด์ฉ์ด ์์ด์ step2.php ์ฝ๋์์ php ๋ถ๋ถ๋ง ๊ฐ์ ธ์๋ค
Step 1
if ($name === "dnyang0310" && $pw === "d4y0r50ng+1+13") {
echo '<h4>Step 2 : Almost done...</h4><div class="door_box"><div class="door_black"></div><div class="door"><div class="door_cir"></div></div></div>';
์์ด๋๋ dnyang0310
๋น๋ฐ๋ฒํธ๋ d4y0r50ng+1+13
์ด๋ค
๋น๋ฐ๋ฒํธ ์ฐํ
// pw filtering
if (preg_match("/[a-zA-Z]/", $input_pw)) {
echo "alphabet in the pw :(";
}
๊ทผ๋ฐ ์ด์ด์๊ฒ๋ ๋น๋ฐ๋ฒํธ์ ์ํ๋ฒณ์ด ์์ผ๋ฉด ์๋๊ฒ ์ฒ๋ฆฌํด๋จ๋ค
$pw = preg_replace("/\d*\@\d{2,3}(31)+[^0-8\"]\!/", "d4y0r50ng", $input_pw);
๊ทธ ์์ \d*\@\d{2,3}(31)+[^0-8\"]\! ๋ผ๋ ์ ๊ท์์ ๋ง์กฑํ๋ฉด d4์ด์ฉ๊ตฌ๋ก ์ธ์ํ๊ฒ ํด๋จ์ผ๋ ์ด์ฉํด๋ณด์
- \d* : 0๊ฐ ์ด์ ์ซ์
- \@ : ๊ธฐํธ @
- \d{2,3} : ์ซ์ 2~3๊ฐ
- (31)+ : 31์ด๋ผ๋ ์ซ์ 1๋ฒ ์ด์ ๋ฐ๋ณต
- [^0-8\"] : ๋ฌธ์ ์๋ฌด๊ฑฐ๋ (๋จ 0~8 ์ซ์ ๋๋ ๊ธฐํธ " ์ ์ธ)
- \! : ๊ธฐํธ !
๋์ถฉ 0@12319! ๋ก ์ ๊ท์์ ๋ง์กฑํ๋ ๋ฌธ์์ด์ ๋ง๋ค์๊ณ
๋น๋ฒ์ผ๋ก 0@12319!+1+13์ ์ ๋ ฅํ์
์์ด๋ ์ฐํ
$name = preg_replace("/nyang/i", "", $input_name);
nyang์ด๋ผ๋ ๋ฌธ์์ด์ด ์์ผ๋ฉด ์์ ๋ฒ๋ฆฌ๊ฒ ๋ง๋ค์ด๋จ๋ค
์ฆ dnyang0310 ์ด๋ผ๋ ์์ด๋๋ฅผ ์ ๋ ฅํด๋ d0310 ์ผ๋ก ๋ค์ด๊ฐ๋ฒ๋ฆฐ๋ค
๊ทธ๋ผ ์์ ๋ฒ๋ฆฐ ํ์ dnyang0310 ์ด ๋๋๋ก dnnyangyang0310 ์ผ๋ก ๋ง๋ค์ด์ฃผ์
๊ฒฐ๊ตญ
์์ด๋ : dnnyangyang0310
๋น๋ฐ๋ฒํธ : 0@12319!+1+13
์ฌ๋ฐ๋ค
Step2
์ด์ ๊ทธ๋ฅ ์์คํ ์ปค๋งจ๋๋ง ์ ๋ ฅํ๋ฉด ๋๋ค
์ด๋ ๊ฒ ์ปค๋งจ๋์ฐฝ์ด๋ ๋๊ฐ๋ค
๋ฌธ์ ์ ํ๋๊ทธ์ ์์น๋ ../dream/flag.txt
๋ผ๊ณ ํ์ผ๋ฏ๋ก ์ ์ฐพ์๊ฐ์ flag.txt๋ฅผ ์ฝ์
cd ../dream; cat flag.txt
๋ญ๊ฐ ๋ฌธ์ ๊ฐ ์๋ค
์ฝ๋๋ฅผ ํ๋ฒ ๋ ๋ณด์
// cmd filtering
else if (preg_match("/flag/i", $cmd)) {
echo "<pre>Error!</pre>";
}
else{
echo "<pre>--Output--\n";
system($cmd);
echo "</pre>";
}
flag๋ผ๋ ๋ฌธ์๊ฐ ๋ค์ด๊ฐ์์ผ๋ฉด Error ๊ฐ ๋จ๋๋ก ์ฒ๋ฆฌํด๋จ๋ค
๊ทธ๋ผ flag๋ผ๋ ๋จ์ด๋ฅผ ์ฐ์ง ์๋ ๋ช ๋ น์ด๋ก ์ ๊ทผํด๋ณด์
cd ../dream; cat ????.txt
cat ์ ๋ฌผ์ํ๋ฅผ ๋ฃ์ผ๋ฉด ๊ทธ ๋ฌผ์ํ์ ์๋ฌด๊ฑฐ๋ ๋ค์ด๊ฐ ๋ฌธ์์ด๋ก ์์์ ์ฐพ์ ์ถ๋ ฅํด์ค๋ค
์์ฃผ ์ฌ๋ฐ๋ค
์ด๋ณด ํด์ปค๋ค์๊ฒ ๊ฐ์ถ !!
'๐ Cyber Security > Web Hacking (์นํดํน)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Dreamhack] ๋๋ฆผํต ์นํดํน: simple_sqli_chatgpt (0) | 2023.11.20 |
---|---|
[Dreamhack] ๋๋ฆผํต ์นํดํน: simple-ssti (0) | 2023.11.17 |
[DreamHack] ๋๋ฆผํต ์นํดํน : ex-reg-ex (0) | 2023.11.06 |
[Dreamhack] ๋๋ฆผํต ์นํดํน : Flying Chars (2) | 2023.11.03 |
[DreamHack] ๋๋ฆผํต ์นํดํน php-1 (1) | 2023.11.02 |