基本概念:
例如:
可控的话 可能的漏洞。
相关函数
函数区别:
包含路径不存在的话,include继续执行,require报错。
once后缀表示包含一次。
实现包含:
不限制文件名,只要有一小段可执行PHP代码,就可以执行了。
上传之后 包含进去:
图片马也可以。
那如果包含的是 不可执行的文件呢,默认会进行文件读取;
比如:
上面的ect 是php
用户信息的目录。直接读取了出来,那么 能读取整个站的文件 也是一种思路。
如果可以读取整个站的代码读出来,会变成白盒审计,降低难度。
具体场景:
重点在这里可以玩~~!
有可能 过滤 PHP的括号 或者字段:
用js替换即可。
之后在连菜刀:
查看源码:
ko !
远程包含的场景:
类似于 %00截断。
伪协议场景比较多
ptar可以 直接用 zip改后缀名然后上传包含,一样的可以利用 漏洞利用。
zip 改名成 JPG 后缀再传上去也是可以的,phar无所谓后缀名是什么。 zip 也可以包含。
上面可以直接 包含进去~里面的文件。
包含的时候 url 默认会加 PHP后缀。
# 要换成 %23.
利用php流:
文件读取漏洞,可以把 代码 down下来,
因为 网站 大部分 代码 都是可执行 漏洞,所以包含没什么 意义,会直接执行。(并不能获取源代码)所以 这个函数 可以变成 不是全部可执行文件的。
条件一默认关闭的,因为 可以包含。
比如 这样的话,传过去 整个字符串。
场景:日志文件
找到漏洞找不到可控点:
但是 日志文件 一般是 不可读的,所以 利用场景也不好。
系统环境:
这个 一般 也不可以读取。。
如果可以的话,payload:
session:(路径 从 PHPinfo 知道)
session 挖洞也可以用:
这个思路。。。。。
user 用户名可控吗?
PHPinfo中 有 位置:然后去找--------------
上传之后可以看见一个临时文件位置:
因为session 里面 有 用户名的,所以可以显示 然后getshell.
远古魔法场景:
输很多。。。。。。。。。。。。。。。。。也是可以的。
具体场景 phpinfo:
对任何 php 文件 上传 都会生成:
竞争上传:
难点在于 不知道文件名 在哪里:
所以要拿到 phpinfo:
脚本待续。。。。。。。(github搜)
自包含场景
要是没有PHPinfo的话。
可以进行自包含:
自包含之后getshell
php崩溃:
简书搜 王一航 有脚本: