[XCTF嘉年華體驗賽](web)web2 assert函數
阿新 • • 發佈:2017-06-21
資料 origin 利用 width about 打包 package data add
0x00 題目分析
瀏覽一遍頁面,在about頁面,獲得如下信息
訪問 .git/ ,頁面存在。
使用githack扒下來。得到源碼,進行代碼審計。
分析得到:
1.flag在flag頁面,要看源碼才能看到。
2. 參數過濾了 ../ 也就是限定了只能在本目錄
3. exists函數 對文件的存在進行判定。
0X01 解題思路
理清思路,要看源碼,有哪幾種方法。
1.系統命令執行,cat 等函數
2.函數執行,show_source 等
3.將文件打包 ,下載下來。
這裏最有可能的就是函數執行了,雖然下面有一個 “require_once” 但是由於上面兩個語句的限制,不存在遠程包含。
將代碼扔進軟件自動審計。
很顯然,關鍵就在assert函數,網上查找相關資料。
函數介紹參考以下頁面:
https://www.douban.com/note/217557007/
對這個函數的理解就是,這個函數會執行括號裏面的語句,括號裏面的句子的布爾真值不是true時候,就會提示warning。
下面是對這個函數的測試。
當為true的時候就沒有提示。
所以,這一題。
註意閉合前後單引號,括號等。可得參數應為
page=1‘ ) == (show_source(‘templates/flag.php‘)) ;//
網上找到一種這樣的:
page=‘ and die(highlight_file(‘templates/flag.php‘)) or ‘
這種寫法的是利用第二個assert,最後的句子為:
執行了三個語句,裏面那個 “or” 也可替換為“and”
0x02 小結
神奇的php函數:assert ,這個函數可以用來寫馬過狗,但一句話過狗太簡單了。
有什麽問題不先問問神奇的海螺呢?
繼續學習~~
[XCTF嘉年華體驗賽](web)web2 assert函數