1-1 石慶數碼
(1)打開頁面顯示404,查看源碼沒啥東西。
(2)點擊404頁面的“GO BACK”,查看源碼,發現一串注釋,得到flag。
1-2 眼疾手快
(1)老題目,打開源代碼可以看到下面一段話,當滿足條件后,會執行post clicks=1000000
(2)頭鐵手動剛是不可能的23333,直接使用hackbar來post
(3)直接Get Flag
2-1 躲躲藏藏
(1)下載下來是一個二維碼,掃描之后顯示“you find me”。
(2)右鍵用壓縮包方式打開,發現有密碼,猜是偽加密,用winrar修復,得到rebuilt.DDoIM5Ez.png文件。
(3)壓縮包方式打開,獲得flag.xls文件,常規打開是一堆亂七八糟的東西。
(4)丟進虛擬機,使用命令strings flag.xls | grep zjctf初步得到flag串
(5)提交發現不行,仔細觀察字符串,確定為ADFGVX加密,根據常規字母表,手動解出flag。
4-1 你追我趕
(1)打開是個游戲,小恐龍真好玩23333,選擇讓它死一次,fine,控制臺出現了新的信息。
(2)進入這個js,發現有輸出正確flag的判斷條件。
(2)修改js。
(3)保存之后重新玩一次。多次嘗試,得到flag。
4-2 心有猛虎
此題nc換行之后啥都沒有還以為沒連上,迷……
一開始根據題目,以為是計算器,輸入了1+1=,結果就退出了,猜測是等號被ban了。
發現輸入命令不能立刻輸出到屏幕上,猜測是因為python的緩存機制導致執行雖然得到了執行結果但是沒有立刻輸出到屏幕上,再根據輸入__builtins__會立刻返回一長串內容,所以猜測是要湊夠一定的長度的輸出才能讓它立刻回顯到屏幕上,等號觸發了結束,會輸出一堆內容,回顯結果。
(后來Sgdream大師傅復現之后,告訴我以上猜測成立hhhh...感jio這個問題應該坑了不少隊)
正經解題過程:
(1)xshell連上服務器,nc連接好,nice,根據題目”Welcome to ZJCTF Python clever calculator”,輸入” __builtins__”,發現如圖所示內容:
(2)判斷為python沙箱逃逸。然后各種嘗試,發現被ban掉了不少東西,比如system、os等……
(3)查詢資料,使用__import__函數繞過,用等號(=)結束,因為等號似乎被ban了,所以能直接退出。
查詢當前目錄:
__import__("pbzznaqf".decode('rot_13')).getstatusoutput('pwd')
獲取目錄:
__import__("pbzznaqf".decode('rot_13')).getstatusoutput('ls')
發現flag文件,直接cat,得到flag:
__import__("pbzznaqf".decode('rot_13')).getstatusoutput('cat flag')
第一次遇到賽時五小時登錄兩小時的比賽hhh……特別感謝Sgdream大師傅之后的指點,重新了解了Python的緩存機制,美滋滋(ˇ?ˇ)