即:....// #6 文件包含写webshell 观察源码
1、观点:在php代码中,总会有一些代码我们会经常用到,这时引入了文件包罗函数,可以通过文件包罗函数把这些代码文件包罗进来,直接使用文件中的代码,这样提高了我们的事情效率。
2、文件包罗函数:
include():如果产生错误,会孕育产生一个警告然后继续执行脚本
include_once():与include()不异,如果文件之前被包罗过则不再包罗
require():会遏制执行代码
require_once():如果文件之前被包罗过则不再包罗
3、类型:本地文件包罗、长途文件包罗(url的形式进行)
配置文件参数:allow_url_fopen:为ON时,能读取长途文件,
Allow_url_include:为ON时,就可以使用include和require等方法包罗长途文件
4、操作方法——伪协议
# file:// 协议用户访谒本地文件系统,使用要领:?file:// [文件的绝对路径和文件名]
# php://input 可以访谒请求的原始数据的只读流,将post请求的数据看成php代码执行
# php://filter 元封装器,读取源代码并以base64编码方法输出
# zip://, bzip2://, zlib:// 属于压缩流,可以访谒压缩文件中的子文件,使用要领:zip:// [压缩文件绝对路径]#[压缩文件内的子文件名]
# data:// 类似于php://input,可以让用户来控制输入流
其他操作要领:(绕过方法)
#00截断:windows在读文件名的时候遇到00就会遏制
#长度截断(win:256,linux:4096)
#包罗日志文件:传入的参数值如果会生存到日志文件中,我们可以把木马传入到日志文件中,知道日志的路径就可以进行下一步操纵
#包罗session
5、防御
#php中使用open_basedir配置限制访谒在指定的区域
#过滤 . (点) / (反斜杠) \(反斜杠)
#禁止处事器长途文件包罗
#尽量不要使用动态包罗,可以在需要包罗的页面固定写上
二、操作LFI环境复现文件包罗缝隙
这是我在github上边下载的,有很多标题问题要做一些窜改才可以实现,所以懂了道理就可以了,用PHP study本地搭建起来就可以复现,
因为我的路径和原本代码的路径差别,所以每复现一个之前都要把文件包罗函数里面的路径改削一下,例如:
# LFI-1 简单的文件包罗
不雅察看源代码,这是一个简单的文件包罗
我此刻网站根目录下传入一个phpinfo的文件,
按照源码,框中传入的参数是page,我们可以结构payload,得到根目录下的文件内容
按照尝试,不管文件的后缀名是jpg、txt,城市以php代码执行,所以可知文件包罗时与传入文件的类型无关
# LFI-2 00截断绕过
不雅察看源码,
这个参数传入之后组成的路径是:includes/文件.php,我们可以用%00把.php截断,然后操作相对路径进行绕过
这个题可能是有很多限制,我把includes删除然后把php版本调到5.2.17然后把gpc设置为off才华实现。
如果我们传入一个一句话,这时就可以用菜刀连接
# LFI-3 点、斜杠绕过
不雅察看源码,源码傍边取后四位即后缀名与.php对照,如果不异则输出不被允许检察源码的警告,若差别则读取文件内容。
我们可以在url的末尾加.(点),因为,在文件定名时,后缀后面加点是会自动去失的
我们也可以加/. 因为在定名时,/(斜杠)是不允许呈现的
# 4 去后缀名绕过不雅察看源码,
addslashes()函数:是一个过滤函数
参数传入之后组成的url是:includes/class_参数.php
源码自己就是有.php的后悔,我们可以传参数时舍后缀
#5 双写绕过
不雅察看源码,
这段源码过滤了../,我们可以通过双写绕过,即:....//
#6 文件包罗写webshell
不雅察看源码,
这个和第一个差不久不多,就是参数是以post的方法提交的,我们只要用post的要领提交参数,就可以发明文件包罗
此时,我们如果传入一个任意文件写入以下代码,执行之后就可以在文件的目录写入一个shell
<?php fputs ( fopen(‘shell.php‘,‘w‘) , ‘<?php eval($_POST[shell])?>‘) ;?>
这段代码的意思就是新建一个shell.php的文件,写入后面的一句话
#7 用post的方法做00截断或舍去后缀 ../../../phpinfo.php%00
#8 post方法做00截断或加./绕过
#9 post方法做舍去后缀名绕过
#10 post方法双写绕过
#11 简单的post方法包罗,有一个隐藏的输入框,用隐藏的参数
#12 简单的get方法包罗,有一个隐藏的输入框,用隐藏的参数
#13 get方法双写绕过
#14 post方法双写绕过
注:可能是环境的问题,很多题不能实现,只要懂道理就可以
#包罗日志文件获取webshell
日志默认路径:
1、apache+Linux日志默认路径:
/ect/httpd/logs/access_log 或者 /var/log/httpd/wccess_log
2、apache+Win2003日志默认路径
D:\xampp\apache\logs\access.log
D:\xampp\apache\logs\error.log
3、IIS6.0+Win2003默认日志文件
C:\WINDOWS\system32\Logfiles
4、IIs7.0+win2003默认日志文件
%SystemDrive%\inetpub\logs\LogFiles
5、nginx日志文件默认路径
日志文件在用户安置目录logs目录下
例如安置路径伪/user/nginx,
拿我的日志文件目录就是在/user/nginx/logs里
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/30378.html