打開鏈接發現是一個笑臉,第一步F12查看網頁源代碼,發現source.php

訪問一下,出現了源碼


根據代碼可以得出,如果參數file符合checkFile方法的檢查規則,就會包含文件,先試一下包含hint.php

符合檢查規則,並且發現flag就在ffffllllaaaagggg中
但是嘗試包含失敗,網上查了一下,發現有很多都說url二次編碼繞過,這樣做也沒錯,但是正解卻是目錄穿越漏洞,
正常的?就可以,不用編碼,這是include的一個特性

如果include包含的文件中含有路徑,就會包含最后一個/后面的文件,因此直接構造payload:source.php?file=hint.php?/../../../../../../ffffllllaaaagggg
本來是會包含hint.php文件的,但是后面出現了../,就包含了最后面的ffffllllaaaagggg

至於中間使用幾層目錄,純粹是試出來的
