AIS3 2020 pre-exam write-up
今年第一次打AIS3 pre-exam,有很多第一次遇到的題目類型
稍微整理了一下我有解的題目的解題過程,歡迎大家一起討論~
Misc
Piquero
347 solves
題目
I can’t see the flag. Where is it?
File
解法
發現圖片內容是點字,於是到網路上找找點字的相關資料,會發現大概會是這樣:
- 表示下個字母為大寫的tag
- 表示下個字元為數字
- 表示下個字原為符號
其餘的符號都是表示 字母 / 數字
接下來對照網路上查到的table,就可以獲得flag
Flag
AIS3{I_feel_sleepy_Good_Night!!!}
Karuego
245 solves
題目
Students who fail to summon will be dropped out.
File
解法
對於png,先到binwalk裡檢查有沒有藏檔案,發現裡面有zip
發現到zip有經過加密,可透過fcrack搭配reckyou.txt爆破
1 | fcrackzip -u -D -p rockyou.txt [zipname] |
最後會找到lafire
Flag
AIS3{Ar3_y0u_r34l1y_r34dy_t0_summ0n_4_D3m0n?}
Soy
172 solves
題目
Here is your flag. Oops, my bad.
File
解法
賽後解
可以利用QRazyBox幫助解題
在上面畫完後使用Tools的Extract即可
Flag
AIS3{H0w_c4n_y0u_f1nd_me?!?!?!!}
Saburo
108 solves
題目
Spell you flag and fight with me.
PS. flag is printable characters with AIS3{…}
nc 60.250.197.227 11001
解法
nc上去後發現只會問問題,給個字串後會回覆一個數字
猜測Flag前綴為AIS3{
依序放入後發現數字會是嚴格遞增的,所以我們只需要寫個腳本把所有Ascii中visible的字元都Try過
中間會出現多次誤差,可以單個字元測試3~5次以減少誤差
1 | from pwn import * |
Flag
AIS3{A1r1ght_U_4r3_my_3n3nnies}
Reverse
TsaiBro
281 solves
題目
很好….你很腦殘嗎….敢這樣講刀劍神域…….我死也不會放過你 我..要..殺死…你..
File
解法
其實一開始根本毫無頭緒(?
在網路上找資料找到去年的write-up,發現考點相同
這題是考Tap Code,在一個發財
左右兩側各可以拿到一組點
這裡的點可以去透過Table對照到一個字元
而Table可以在strings TsaiBro
看到這串字
裡面總共有64個點,參考剛剛發財
附近的點數,最高是8個點,可以猜測會是8*8的Table
建表完直接對照就可以獲得Flag
1 | table = ['5','6','7','8','9','{','}','_', |
Flag
AIS3{y3s_y0u_h4ve_s4w_7h1s_ch4ll3ng3_bef0r3_bu7_its_m0r3_looooooooooooooooooong_7h1s_t1m3}
Fallen Beat
171 solves
題目
CTF player,
我要挑戰你, I’m gonna challenge you!!
ZR
這是我的室友兼 lab 同學,
他已經考過金框暴龍天,他是個旋鈕人,
不像你是個敲鍵盤的,
所以我要測測你的程度到哪裡,
就用 ZR 的大一 project 來決勝負吧!!
得到 Full Combo 來讓我刮目相看!!
author: terrynini
File
解法
可以發現到這是個幾乎不可能完成SS的音G
透過線上java decompiler decompile後可以知道,當達到MaxCombo時可以獲得Flag
雖然一開始Flag有給了一坨奇怪的東西,但是跟另一坨更怪的東西xor後,flag變得不可解
所以開始朝向玩Game發展
不過可以透過Cheat Engine幫你減速
但是譜很長,很容易失誤,所以說,CE還可以去改記憶體上的值
於是很開心的把值改成MaxCombo 1112
然後加速500倍直接結束遊戲
…然而,這不是結束
你可以透過decompile的內容得知flag是直接存在變數中,所以直接用CE找到AIS3即可
AIS3
AIS3{Wow_how_m4ny_h4nds_do_you_h4ve}
Stand up!Brain
62 solves
題目
又到了 Brain tell 咪 ㄜ joke 的時間了
這次輪到你說個笑話來聽聽了
File
解法
賽後解
strings後會發現到裡面存有brain fuck
發現到執行後會失敗,因此會去重看字串
但是前面有一串連續的重複字串
刪除後就可以執行了
最後會剩下這些內容
1 | >>----[---->+<]>++.++++++++.++++++++++.>-[----->+<]>.+[--->++<]>+++.>-[--->+<]>-.[---->+++++<]>-.[-->+<]>---.[--->++<]>---.++[->+++<]>.+[-->+<]>+.[--->++<]>---.++[->+++<]>.+++.[--->+<]>----.[-->+<]>-----.[->++<]>+.-[---->+++<]>.--------.>-[--->+<]>.-[----->+<]>-.++++++++.--[----->+++<]>.+++.[--->+<]>-.-[-->+<]>---.++[--->+++++<]>.++++++++++++++.+++[->+++++<]>.[----->+<]>++.>-[----->+<]>.---[->++<]>-.++++++.[--->+<]>+++.+++.[-] |
Flag
AIS3{Th1s_1s_br4iNFUCK_bu7_m0r3_ez}
Pwn
BOF
189 solves
題目
That is easy-peasy challenge and even my grandma can do.
nc 60.250.197.227 10000
Challenge environment: Ubuntu 18.04
File
解法
透過IDA-Pro decompile後可以發現system("sh")
查看記憶體位置後再測試一下中間需要塞入多少bytes
可以發現本機塞入52個字元後會開始引響rip
但是在Ubuntu上似乎需要-4(這部分是猜到的)
最後寫個腳本即可
1 | from pwn import * |
Flag
AIS3{OLd_5ChOOl_tr1ck_T0_m4Ke_s7aCk_A116nmeNt}
Crypto
Brontosaurus
380 solves
題目
Brontosaurus peek at last year’s problems with a long neck and picked up “KcufsJ”.
File
解法
開啟檔案後會發現是JSFuck
但是直接拿去執行會出錯
需要先reverse字串後再執行即可
Flag
AIS3{Br0n7Os4uru5_ch3at_3asi1Y}
T-Rex
381 solves
題目
Tyrannosaurus-rex is an nihilist.
File
解法
很明顯的,只要對照Table即可
(當然,還是寫code不傷眼)
Code
1 | table={'!!':'V','!@':'5','!#':'I','!$':'K','!%':'E','!&':'U','@!':'F','@@':'0','@#':'W','@$':'G','@%':'3','@&':'Z','#!':'Y','#@':'M','##':'H','#$':'B','#%':'C','#&':'8','$!':'J','$@':'2','$#':'S','$$':'X','$%':'7','$&':'R','%!':'6','%@':'9','%#':'4','%$':'T','%%':'P','%&':'D','&!':'1','&@':'L','&#':'Q','&$':'A','&%':'N','&&':'O'} |
Flag
AIS3{TYR4NN0S4URU5_R3X_GIV3_Y0U_SOMETHING_RANDOM_5TD6XQIVN3H7EUF8ODET4T3H907HUC69L6LTSH4KN3EURN49BIOUY6HBFCVJRZP0O83FWM0Z59IISJ5A2VFQG1QJ0LECYLA0A1UYIHTIIT1IWH0JX4T3ZJ1KSBRM9GED63CJVBQHQORVEJZELUJW5UG78B9PP1SIRM1IF500H52USDPIVRK7VGZULBO3RRE1OLNGNALX}
Octopus
103 solves
題目
BB84 quantum key distribution has 8 main directions,
just like a cute octopus A __ A.
File
解法
先參照維基百科了解BB84如何加密
題目中已經給好Basis
我們只要參照Table就可以分別對應出其箭號方向(Basis需相同),進而找到是0/1
最終檔案中最後一筆資料與結果分別轉binary後xor轉字串即可
Flag
AIS3{EveryONe_kn0w_Quan7um_k3Y_Distr1but1on--BB84}
Web
Squirrel
220 solves
題目
Hack those creepy rats.
解法
從scource code可以發現到我們可以訪問目錄中的檔案
先去看看api.php
會發現到裡面有exec
,可以猜測這裡會出漏洞
先閉合,再輸入指令就可以了
https://squirrel.ais3.org/api.php?get=';ls /‘
檔案可以先從當前目錄找,如果沒有,可以猜是在根目錄或是find猜猜看檔案名稱
Flag
AIS3{5qu1rr3l_15_4_k1nd_0f_b16_r47}
Shark
261 solves
題目
Let’s dive deep again this year.
解法
一開始不知道這題要做什麼
於是到網路上找到去年的write-up,發現倒是在網址後面path造成的SSRF漏洞
可以先到https://shark.ais3.org/?path=php://filter/resource=/etc/hosts 獲取ip
根據題目,flag藏在附近的server上,所以可以從1開始慢慢手動找
最終可以在https://shark.ais3.org/?path=http://172.22.0.2/flag 獲得flag
Flag
AIS3{5h4rk5_d0n'7_5w1m_b4ckw4rd5}
Elephant
165 solves
題目
Do elephants love cookies?
IMPORTANT
There's a hint in the webpage
解法
在cookie裡面可以看到一個elephant_user
,將值base64 decode後會發現是php序列化後的資料格式
但是由於不知道底層是將甚麼class序列化,目前還用不上它
由於沒有其他資訊了,想到最初web學到的知識
開始搜尋 /robots.txt
, /.git
, /.svn
…
發現到/.git
有githack漏洞
在網路上找到githack工具直接獲得網頁原始碼
透過原始碼可以發現到token會經過md5加密
而要獲取flag需要在strcmp($flag, $this->token)==0
才能獲得
顯然token需要是特殊值才能破解它
發現到token是NAN可以解
於是將class複製後將__construct
中關於token
的部分註解
再將class serialize base64_encode
將cookie複寫即可
flag
AIS3{0nly_3l3ph4n75_5h0uld_0wn_1v0ry}
Snake
137 solves
題目
How to read that flag?
解法
打開後會看到一個python檔,且可以接收pickle data
如果要符合 data is not data
理論上不可能
除非寫一個function讓他可以每次詢問與上次相反
但是pickle中能寫入的內容會是靜態的,function沒辦法寫入
所以我們目標會是後面的 return str(data)
,只要data是flag就可以了
1 | import pickle |
最後將pickle檔案放上去即可!
Flag
AIS3{7h3_5n4k3_w1ll_4lw4y5_b173_b4ck.}
心得
第一次打AIS3 pre-exam,收穫意外的多
尤其在web部分花了特別多的心力在上面,也藉此學到像是 phpserialize 和 python的pickle data
Crypto很多都是參考去年的write-up 自己腦洞大開解出來的並不多
Pwn是我很不熟悉的領域,所以碰的題目不多
Reverse印象最深刻的是音遊w,第一次用cheat engine XDD
不過那題的正解似乎是先返組譯java後trace code找到flag如何產生
整體難度個人覺得中偏難w
這次的排名在第96,明年繼續加油OwO