php session 前缀,PHP文件包含--session
利用條件:session文件路徑已知,且其中內(nèi)容部分可控。
php的session文件的保存路徑可以在phpinfo的session.save_path看到。
session 的文件名格式為 sess_[phpsessid],而 sessionid 在發(fā)送的請(qǐng)求的 cookie 字段中也可以看到。
實(shí)例:“百度杯”CTF比賽 十二月場 notebook
tips:文件包含phpinfo是不是有新的發(fā)現(xiàn)。
打開頁面,看見url可能存在文件包含,可以看到登錄框,審查下元素,沒發(fā)現(xiàn),按照正常流程走一遍,注冊(cè)admin/admin,居然還成功了,登錄,顯示歡迎admin,there is no flag。
接下來測試,先測試文件包含吧,將module的php換成空,我們可以控制要包含文件的后綴,包含一下題上提示的phpinfo.php,文件不存在。看能不能用php偽協(xié)議讀取一下login和register的源碼,未成功。然后測試下sql注入,在登錄和注冊(cè)頁面好像都沒有。
當(dāng)我們沒思路的時(shí)候就掃描一下目錄。掃出robots.txt,訪問得到php1nFo.php文件,訪問得到php配置信息。我們目前可以控制的就是注冊(cè)的用戶名,接下來嘗試下session包含。
在php配置信息中可以看到
圖片.png
圖片.png
open_basedir是可將用戶訪問文件的活動(dòng)范圍限制在指定的區(qū)域。注意用open_basedir指定的限制實(shí)際上是前綴,而不是目錄名。 session.save_path就是session文件存在的位置。
舉個(gè)例子: 若"open_basedir = /dir/user", 那么目錄 "/dir/user" 和 "/dir/user1"都是
可以訪問的。所以如果要將訪問限制在僅為指定的目錄,請(qǐng)用斜線結(jié)束路徑名。例如設(shè)置成:
"open_basedir = /dir/user/"
那么問題來了,我們只能控制/tmp目錄,/var/lib/php5這個(gè)目錄是包含不了的。。
這里用題給的tips文件包含phpinfo是不是有新的發(fā)現(xiàn),文件包含php1nFo.php這個(gè)文件,可以看到
圖片.png
session.save_path變了,我也不知道為什么。。
接下來session包含。
payload:?module=&file=../../../../tmp/SESS/sess_nlloqni0ef0tpqbt3jdj81rj75
圖片.png
可以看到admin,接下來我們注冊(cè)用戶名為<?php system('ls'); ?>,登錄后。依舊payload像上面,可以得到
圖片.png
然后注冊(cè)用戶名<?php system('cat flag.php'); ?>,審查元素得到flag。
圖片.png
總結(jié)
以上是生活随笔為你收集整理的php session 前缀,PHP文件包含--session的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mybatis java类注解式_Spr
- 下一篇: php链接javascript,java