AIS3 2025 pre-exam
Before All
因為我手受傷所以不太能生腳本 基本上本篇的腳本都是我告訴AI解法AI生的又或者直接丟AI
然後write up 寫的跟大便一樣請見諒
Misc
welcome
Flag: AIS3{Welcome_And_Enjoy_The_CTF_!}
Ramen CTF
題目給了一張圖片
看到桌子上的發票透過統編去查是哪家店
找到地址 丟到google map 得到
然後去找菜單 接著通靈出菜品
Flag: AIS3{樂山溫泉拉麵:蝦拉麵}
AIS3 Tiny Server - Web / Misc
這題的解法 根據題目敘述 大概猜是Path Traversal
然後 發現不能…/…/…/…/去解 於是試 URL encode
payload
1 | curl http://chals1.ais3.org:20395/..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Freadable_flag_zFFgp4cs5vx0cK0ZFcW3dbd6yZ2Vl0H4 |
Flag: AIS3{tInY_we8_S3rV3R_w1TH_fIl3_8rOWs1n9_45_@_Fe4TuRe}
Web
Tomorin db 🐧
這題給了個Source
1 | package main |
我看到
1 | http.HandleFunc("/flag", func(w http.ResponseWriter, r *http.Request) { |
當我們在url輸入/flag會redirect到
1 | https://youtu.be/lQuWN0biOBU?si=SijTXQCn9V3j4Rl6 |
我們的目標是bypass這個
payload:
1 | curl http://chals1.ais3.org:30000/.%2fflag |
Flag: AIS3{G01ang_H2v3_a_c0O1_way!!!_Us3ing_C0NN3ct_M3Th07_L0l@T0m0r1n_1s_cute_D0_yo7_L0ve_t0MoRIN?}
Login Screen 1
solution 看到 普通人登入是guest/guest
盲猜admin是admin/admin
然後丟burp去bypass掉redirect to 2FA這個東東
Flag: AIS3{1.Es55y_SQL_1nJ3ct10n_w1th_2fa_IuABDADGeP0}
Rev
web flag checker
這題給了wasm檔案
解法:把他decompile to C 然後 看code解
exploit
1 | # 已知的驗證目標值(5 組 8-byte 值) |
Flag: AIS3{W4SM_R3v3rsing_w17h_g0_4pp_39229dd}
AIS3 Tiny Server - Reverse
這題我丟ida看到個function
1 | _BOOL4 __cdecl sub_1E20(int a1) |
發現他是要解密
於是丟給GPT生code
1 | <!DOCTYPE html> |
然後AI直接幹出一個web給我
Flag: AIS3{w0w_a_f1ag_check3r_1n_serv3r_1s_c00l!!!}
PWN
Welcome to the World of Ave Mujica🌙
這題我發現是BOF
然後function Welcome_to_the_world_of_Ave_Mujica
裡有/bin/sh 可以執行RCE
找到他的address 以及算好offest就可以了
exploit
1 | from pwn import * |
Flag: AIS3{Ave Mujica🎭將奇蹟帶入日常中🛐(Fortuna💵💵💵)…Ave Mujica🎭為你獻上慈悲憐憫✝️(Lacrima😭🥲💦)…_75f6bacc2a893aef52fa73055ef4b769}
Crypto
Stream
1 | from random import getrandbits |
output.txt
1 | 0xc900d26d54a60819abf46f3380bdc0d4b29d16bfde908e824f67ddc9d1f945a9e252deaf60dc7336c7efd5f7e11e943bdb9d8484254e3e4bf228e676e692ab97 |
但根據code 前面80行都沒屁用 於是只要最後一行就好
1 | 0x1a95888d32cd61925d40815f139aeb35d39d8e33f7e477bd020b88d3ca4adee68de5a0dee2922628da3f834c9ada0fa283e693f1deb61e888423fd64d5c3694 |
也就是這個
exp:
1 | import math |
Random_RSA
1 | # chall.py |
output.txt
1 | h0 = 2907912348071002191916245879840138889735709943414364520299382570212475664973498303148546601830195365671249713744375530648664437471280487562574592742821690 |
exploit
1 | import random |
Flag: AIS3{1_d0n7_r34lly_why_1_d1dn7_u53_637pr1m3}
showECDSA
1 | #!/usr/bin/env python3 |
exploit
1 | #!/usr/bin/env python3 |
Flag: AIS3{Aff1n3_nounc3s_c@N_bE_broke_ezily…}
Hill
1 | import numpy as np |
這題是個hill cipher
exploit:
1 | import numpy as np |
Flag: AIS3{b451c_h1ll_c1ph3r_15_2_3z_f0r_u5}
Happy Happy Factoring
1 | import random |
output.txt
1 | n = 60763718988363732014714378240503239363378716344786064427633103900163714795049031343530976333384849092574531088958278531796791269274033045247468279778697834271056697703384043345478274417830331218076647357163447985776813989427400170525437678547826499412542686651017218028970864190216904615610527825259880112714553787804820022215890969437398474372702507063412690704689550295715710210726663486141414839866746195390190050689478793788994971113120247044980308444816728343285377217719743417243597984030508281943509471779819738142587401185391525828957277332050173790712364630350364573645269670566599757124924556318618780988680189777327076706459707684684212592008631793816662912108065408593909988525347442925181041282276218509071711541277729368738735764243654195687411950100527148736266697290008653570361567103718692686950265823409008150425223699459852898223162147029064447737730602794595138107108115161225211304281588196101442541064849330085624077639919266218475926019026834286095322529307797803560019118617515335223076631003247439277523058831709125266949216817874124236017467949448675716346763692924023726148784017135614973119630683596746148387050812840110466838283975867125038922845823807931521243892970213719547931807222621641732942788807438874234021460457789662655868012096318135427733535828701239344723536380874649435986485519446498010249439129416294059581506089078379364874801633348823482500982032017362540718382857218498839339 |
exploit
我先找出factor
我是用pollard p-1 去分解
算法大概長這樣
source:維基百科
https://en.wikipedia.org/wiki/Pollard's_p_−_1_algorithm
算factor的exploit:
1 | import math |
找到factor後去decrypt
1 | #!/usr/bin/env python3 |
Flag: AIS3{H@ppY_#ap9y_CRypT0_F4(7or1n&~~~}
附上排名