第一題無回顯類型
這裏的exec函數會把參數cmd的值當做命令執行,並且沒有任何過濾和限制。
對於這種無回顯的題目,我們可以選擇重定向符>來查看和獲取信息。
我們先使用cmd=ls>info然後查看info來獲取當前路徑下的文件信息,如下:
發現flag.php,我們再次使用重定向符把其內容寫入一個文件,再讀取這個文件即可,即使用cmd=cat fl*>info,再次前往頁面查看即可。
第二題長度限制類型
題目地址頁面如下:
查閱源碼,發現PHP代碼,閱之。輸入長度限制不超過5時,輸入命令執行。查看信息路徑,去之:
因爲輸入長度限制,我們可以把想要輸入的逐一放入一文件中,在這個文件中拼出cat flag.php來,如下:
接下來使用*>f,即cat flag.php命令執行(因爲會匹配當前路徑所以字符信息此處的相當於cat flag.php),並把信息寫入了f,閱之即可,如下:
第三題後綴限制
頁面源碼無用,主頁閱之如下:
對輸入的參數path進行後綴限制,這裏介紹下正則表達式的/m
因此我們可以配合換行符%0a進行繞過,我們需要令if判斷爲false,使其執行else語句。那麼我們就需要符合正則表達式的後綴限制即輸入首行先是以.txt結尾,接着使用%0a繞過,下面就是我們想要輸入的內容了cat /flag.
組合起來就是x.txt%0acat /flag*,如下:
第四題無字母shell
主頁閱之如下:
過濾純字母,
我們可以利用異或運算來構建我們需要的東西,構建如下:
=(%9e%8c%8c%9a%8d%8b^%ff%ff%ff%ff%ff%ff);KaTeX parse error: Expected group after '_' at position 1: _̲__=($___[0]);
這個東西可以幫助我們獲得shell。
然後調用函數讀取我們需要的文件就可以了,post一個0調用readfile,如下: