放出源码:
这一次是对函数的考查,其调用时php会检查该文件是否已经被包含过,如果是则不会再次包含,于是我们必须想办法绕过这个机制,从而实现再次包含文件flag.php.
上一次我们学习到php伪协议,结合下面这个知识点
我们就可以用伪协议配合多级符号链接的办法进行绕过,直接构造payload:
GET传参成功

转码后成功得到flag.
[资料查阅:require_once 绕过不能重复包含文件的限制]
依旧给出源码:
易知需要我们POST方式传入,然后拼接在后面,而输出只能想办法触发。
这里我们利用这一点
把用POST传入,即payload
成功获得flag.
源码给出:
需要我们绕过上传命令,从而实现RCE.
构造payload:
成功拿到flag.

Ⅱ、无参RCE直接过
看到的一种很牛的办法,不过还没有弄清原理。
payload:
Ⅲ、当然,还有其他绕过方法,如取反绕过:取反基本上用的都是一个不可见字符,不会触发到正则表达式。这里不再赘述,给出脚本:
[资料查阅:无字母数字绕过正则表达式总结]
查看页面源代码
可知前端对文件进行了绕过,且对文件内容也进行了过滤,尝试base64编码绕过:
上传成功!接下来的问题是,如何把这个上传的文件解析为文件。
了解到
htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
其中可以将给定的文件拓展名映射到指定的内容类型:
并且,通过 来设置 或者 配置选项包含一些敏感文件,同时在本目录或子目录里需要有可解析的php文件来触发。
结合以上两个指令,我们可以上传一个文件:
修改请求包上传成功。
按照路径打开webshell.jpg->当作php解析->触发指令->执行源码
连接蚁剑,在根目录下找到Flag.
[查阅资料:.htaccess的利用方法和技巧]
上来就让我们登录(截这张图完全因为background好看哈哈哈❤)
根据题目名称提示,这题考察我们SSTI。补习了一些SSTI的知识后【服务器端模板注入(SSTI)】,先用bp抓包,找注入点:

发现在处有jinja2模板引擎的SSTI漏洞。
于是用等进行简单测试,发现,,,,都被过滤了,于是用尝试绕过,结果也被过滤。(事实上,,,,,也都被过滤,但是我还没有测出来)
从其他师傅那里piao到小姿势:
由此可以用诸如以下的方式构造我们需要的被“过滤”的关键字:
回到这一题,因为空格被过滤,可用换行符绕过。命令执行payload构造过程:
成功构造payload:
修改payload,将改为,上述dict拼接办法不能用(也可能是我操作有问题),直接一个个获取:
发现flag后按照上述办法将命令修改为:
成功获取FLAG,最后给出最终完整的Payload:
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/4997.html