一.進入實驗環境后一臉懵逼
我們右鍵查看源代碼,發現在注釋里面透露一個source.php
我們打開這個source.php,發現是一段php代碼,我們先進行代碼審計,且發現 hint.php, 我們訪問一下這個文件
得到包含flag的文件名。
我們再來看看source.php的代碼部分:
mb_substr() 函數返回字符串的一部分,之前我們學過 substr() 函數,它只針對英文字符,如果要分割的中文文字則需要使用 mb_substr()。
注釋:如果 start 參數是負數且 length 小於或等於 start,則 length 為 0。
用法:mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] ) : string
mb_strpos():返回要查找的字符串在別一個字符串中首次出現的位置
用法:mb_strpos(haystack, needle)
haystack:要被檢查的字符串。needle:要搜索的字符串。
注意:mb_strpos()函數返回被查找的字符串在別一字符串中首次出現的位置
中文查找中,盡量要聲明一下頁面的編碼為UTF-8。
經過源碼審計,只要滿足checkfile函數,為字符串,且不為空,那么就會被include
我們構造source.php? +字符串即可
這里我們構造 source.php?/../../../../../ffffllllaaaagggg,再進行url編碼,得到flag