“百度杯”CTF比赛 十二月场--notebook
知识点:
PHPinfo中
open_basedie设置用户访问文件的活动范围,其指定的限制实际上是前缀,而不是目录名。 举个例子: 若"open_basedir = /dir/user", 那么目录 "/dir/user" 和 "/dir/user1"都可访问。所以如果要将访问限制在仅为指定的目录,请用斜线结束路径名。例如设置成:"open_basedir = /dir/user/"
session.save_path是session文件存在的位置
session 的文件名格式为 sess_[PHPSESSID],而 sessionid 在发送的请求的 cookie 字段中PHPSESSID值也可以看到
看到登录界面url为action.php?module=php&file=login,想到题目提示中的文件包含
随便注册一个账号,admin/123,登陆成功显示there is not flag
目录扫描,发现robots.txt文件,访问得到 php1nFo.php文件
访问:http://246afaabe56d4b1cbe9063f03477c27e55325b5bc0b246a9.changame.ichunqiu.com/php1nFo.php
用户访问文件的范围是/tmp目录
但是session文件保存在/var/lib/php5,用户访问不到
题目提示phpinfo有新发现,我们利用文件包含访问试试
发现这里给了一个新的session文件存放路径,使我们可访问的路径/tmp/SESS
F12查看当前PHPSESSID值:8turu72oeadcggsqgjahi156f3
尝试访问session文件
这里admin被显示,用户名是我们可以控制的
我们再注册一个新用户用户名为:
<?php @eval($_POST[cmd]);?>
登陆后,跟之前步骤一样得到:
尝试命令执行,POST:cmd=system('ls');
执行成功,看到存在flag.php,尝试读取,POST:cmd=system('cat flag.php');
页面上没有回显,查看源代码得到flag
参考:https://www.jianshu.com/p/624fe6d09c0b