# TenableCTF
# Challenge 1: Cat Viewer


Theo gợi ý của đề bài thì có vẻ bài này khai thác theo SQLi và sau một hồi fuzzing thì mình đã tìm được flag
Payload: https://nessus-catviewer.chals.io/index.php?cat=%22union%20select%201,2,flag,4%20from%20cats%20--

# Challenge 2 : Bad Waf No Donut

Mình thử vào endpoint /explore thì nhận được đoạn source code này
```
<html>
<body>
<h1>Explore</h1>
<div id="content">
</div>
</body>
<script>
function isAdmin() {
let cookie = decodeURIComponent(document.cookie);
let cookie_values = cookie.split(';');
for(let i = 0; i <cookie_values.length; i++) {
let c = cookie_values[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf("admin") == 0) {
if (c.substring(name.length, c.length).indexOf("true")) { return true; }
}
}
return false;
}
if (isAdmin()){
document.getElementById("content").innerHTML = '<a href="/secrets">secrets</a>';
}
else {
document.getElementById("content").innerHTML = '<ul><li><a href="/books">books</a></li><li><a href="/cats">cats</a></li><li><a href="/shopping_list">shopping list</a></li></ul>';
}
</script>
</html>
```
Có một endpoint khá lạ là sercet mình thử tìm và nhận được
```
<html>
<body>
<h1>🅢🅔🅒🅡🅔🅣🅢</h1>
<p>I only know one secret, but you gotta know how to ask.</p>
<!-- Try asking with a "secret_name" post parameter -->
</body>
</html>
```
Ý tưởng là thực hiện post với cookie có chứa giá trị ```admin=true``` và call param ```secret_name``` là flag nhưng không thành công

Nhưng khoan đã tại sao secret lại được để ở dạng đặc biệt thế kia liệu có phải gợi ý từ author nên mình có chỉnh sửa lại

Và chúng ta đã có được flag
# Challenge 3: Rose
Challenge hơi tiếc vì cái thằng tool flask-unsign của mình có vấn đề nên không thể giải được, ý tưởng là build lại web trên local sau đó get được session với giá trị key đã được cho sẵn trong source code sau đó thực hiện SSTI :>
https://github.com/Connor-Maddison/ctf_event_writeups/blob/main/tenable_ctf_2023/rose/Rose_writeup.md