AIS3 Pre-Exam 2025

AIS3 Pre-Exam 2025

Misc

Ramen CTF

Description

我在吃 CTF,喔不對,拉麵,但我忘記我在哪間店吃了...,請幫我找出來 (P.S. FlagFormat: AIS3{google map 上的店家名稱:我點的品項在菜單上的名稱}) Author: whale120

Recon

從題目來看就是典型的google hacking和OSINT,看到QRcode就想要搜尋,另外看到發票就要很警覺,這一題一開始想偏了,如果直接查”平和”這個關鍵字會發現是香港的一家拉麵店,但這是誤導,理論上4月去的時候,這家店已經倒閉了,所以要從別的地方下手,通常這是簡單的題目就會有”唯一性”的東西,可以下手,例如統編,最後一個digit被遮蓋就try & error把店家資訊撈出來

Exploit

  1. 透過賣家的統編找到店家地址 https://tw.piliapp.com/vat-calculator/tw/search/?q=34785923
    公司名稱:平和溫泉拉麵店 統一編號:34785923
  2. 查看在Google Map上的店家資訊 > 樂山溫泉拉麵
  3. 查看QRcode知道這是蝦拉麵

Flag: AIS3{樂山溫泉拉麵:蝦拉麵}

nocall🈲📞

Description

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ nc chals1.ais3.org 15451
#!/usr/local/bin/python3
import unicodedata

print(open(__file__).read())

expr = unicodedata.normalize("NFKC", input("> "))

if "._" in expr:
    raise NameError("no __ %r" % expr)

if "breakpoint" in expr:
    raise NameError("no breakpoint %r" % expr)

if any([x in "([ ])" for x in expr]):
    raise NameError("no ([ ]) %r" % expr)

# baby version: response for free OUO
result = eval(expr)
print(result)

Recon

從題目的tag寫到pyjail就知道和jailbreak有關

Reverse

Web

Tomorin db 🐧

Description

1
2
3
4
5
I make a simple server which store some Tomorin.

Tomorin is cute ~

I also store flag in this file server, too.
1
2
3
4
5
6
7
8
9
10
11
package main

import "net/http"

func main() {
	http.Handle("/", http.FileServer(http.Dir("/app/Tomorin")))
	http.HandleFunc("/flag", func(w http.ResponseWriter, r *http.Request) {
		http.Redirect(w, r, "https://youtu.be/lQuWN0biOBU?si=SijTXQCn9V3j4Rl6", http.StatusFound)
  	})
  	http.ListenAndServe(":30000", nil)
}

Recon

從local server的code可以知道他主要是把/flag這個subdirectory redirect到YT,所以解題的邏輯是要把/flag這東西想辦法不要match,也就是bypass /flag,有幾種方式,例如urlencode就是最簡單的方式

Exploit

Payload: http://chals1.ais3.org:30000/%2fflag

Flag: AIS3{G01ang_H2v3_a_c0O1_way!!!_Us3ing_C0NN3ct_M3Th07_L0l@T0m0r1n_1s_cute_D0_yo7_L0ve_t0MoRIN?}

Crypto