针对内容(php tags)检测的一种绕过思路 - Blog of Mathias
Blog of Mathias Web Securtiy&Deep Learning
针对内容(php tags)检测的一种绕过思路
发表于: | 分类: web安全 | 评论:2 | 阅读:684

前两天是个愉快的周末
当我打开了企鹅正准备和女票开开心心的聊一聊的时候。
同学发来了一道题目,然后我发现自己被吸引到了
果断开始做题(注孤生~~)
当然 这里讨论的不是题目的正解 而是引发出来的一种绕过思路
大概的问题是在检测了php tags的情况下,如何绕过检测继续执行php代码
当然,只针对黑名单后缀的情况有效。

1.png

那么很明显,一开始可能我们还想用script tag来绕过,但很明显这里也添加了过滤
遇到这个情况的时候,最好的办法是查阅一下官方手册,看一看还没有没有其他的tag可以使用

http://php.net/manual/en/language.basic-syntax.phptags.php

于是查阅到了如下的定义

7.0.0   The ASP tags <%, %>, <%=, and the script tag <script language="php"> are removed from PHP.

很明显,这个tags似乎是可用的
但是本地测试却不能直接执行

3.png

原来它由php.ini中的asp_tags所控制

4.png

而这个参数默认是off的
到这里似乎就陷入了僵局
但是大家可能不难想起之前通过.htaccess和.user.ini的方式来包含一个马
这里就有人会问了,那样还是得包含的文件里有tags,否则哪怕分开包含,也是不能解析的。
但是回想一下原理 .htaccess和.user.ini中允许我们定义部分php参数

http://www.php.net/manual/en/ini.list.php

查阅一下哪些是可以被我们定义的
那么asp_tags的属性是这样的

PHP_INI_PERDIR:指令可以在php.ini、httpd.conf或.htaccess文件中修改

在实际测试中,我们.htaccess成功的修改了这个属性

5.png

将其劫持为On
如图所示,我们就成功的通过了asp_tags 来执行了php文件
然而,是不是文档里说 只有通过.htaccess定义,我们就相信了呢?
实践出真知,删掉.htaccess并重启apache后
我们新建了.user.ini

s.png

asp_tags = On
也成功的修改了这个参数
而.user.ini针对nginx等其他web server也是有效的,是一种更通用的解法

已有 2 人抢先你了

  1. Omego Omego

    一口老血喷在屏幕上,我踏马真是个zz

  2. 某某某 某某某

    然后我就被忽视了!

添加新评论