CTF中.htaccess文件的利用

.htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过.htaccess文件可以在所在文件夹和子文件下改变php.ini的配置。

在CTF的题目中,如果能够上传或者写入一个.htaccess,我们就可以做到比如说绕过WAF,以及文件包含等操作,因为之前打羊城杯看到.htaccess的文件的利用,就想把我自己之前遇到过的各种用法总结一下。

.htaccess文件是默认开启的,如果没有启动.htaccess文件的话,需要修改配置文件httpd.conf中的以下两点:

  • 把AllowOverride None修改为:AllowOverride All

  • 把LoadModule rewrite_module modules/mod_rewrite.so这句话前面的#去掉。

.htaccess任意文件解析

在CTF中.htaccess文件最常用的地方就是文件上传的题目了,如果题目中使用的是黑名单机制,即限制上传php,pthml,pht等后缀,我们可以使用.htaccess文件重新配置当前文件的解析后缀为其他后缀绕过导致其他后缀的文件被解析为php,就可以导致远程代码执行。

AddType

比如在upload-labs的第四关就可以使用这种方法绕过,首先是限制了php的后缀,如图所示shell.php不允许上传。

但是题目并没有限制.htaccess文件的上传,我们可以上传一个.htaccess文件内容如下:

AddType application/x-httpd-php .jpg

AddType可以指示文件管理系统,对指定后缀文件以选定的文件类型解析 整句话的作用就是让jpg格式的文件解析为php文件。

上传完.htaccess文件之后再上传一个写入一句话木马的shell.jpg文件,尝试连接蚁剑。

发现已经成功连接上了,说明我们上传的.htaccess文件已经成功让jpg格式的文件解析为php了。

AddHandler

除了AddType之外还有AddHandler,例如我们想将txt文件后缀解析为php运行,可以在.htaccess中写下以下两行的其中一行。

  • AddHandler php5-script .txt

  • AddHandler php7-script .txt

意思是指定扩展名为 .php 的文件应被  php5-srcipt/php7-srcipt 处理器来处理。

可以看到写入前后的对比,后者成功把txt文件解析为php文件。

一般这种可以配合着其他的语句来使用,比如说[de1ctf 2020]Check in的这道题,过滤了如下黑名单:

perl|pyth|ph|auto|curl|base|>|rm|ruby|openssl|war|lua|msf|xter|telnet

我们可以上传一个.htaccess内容如下,主要让txt文件解析为php文件,再把flag包含进来。

AddHandler p\hp5-script .txtp\hp_value au\to_append_file /flag

再上传一个1.txt就能加载/flag内容。不过这里涉及到了.htaccess的换行绕过和文件包含,下面都会提到。

SetHandler

.htaccess文件解析还有另外一种常见写法就是利用SetHandler,文件内容如下:

SetHandler application/x-httpd-php

这样所有文件都会当成php来解析,如果要指定某一个类型文件的话,可以写

"shell.jpg">    SetHandler application/x-httpd-php

将shell.jpg解析为php文件,同时这里可以使用正则匹配文件比如:

  SetHandler application/x-httpd-php

就是匹配所有的.ph开头的后缀文件。

SetHandler还有一种用法就是在.htaccess写入:

SetHandler server-status

然后再访问http://ip/server-status即可查看所有访问本站的记录,[de1ctf 2020]Check in这道题的官方wp中提到了这种方式去获取信息。

htaccess的一些绕过

  • 绕过关键字

像上面的upload-labs的第四关内容中如果过滤了application关键字,因为.htaccess支持换行编写,我们可以使用反斜杠换行绕过的方法,如

AddType appli\cation/x-httpd-php .jpg
  • 绕过exif_imagetype函数

exif_imagetype() 的作用是读取一个图像的第一个字节并检查其签名。

比如[SUCTF 2019]EasyWeb这道题就有这个函数,关键代码如下

$tmp_name = $_FILES["file"]["tmp_name"];if(!exif_imagetype($tmp_name)) die("^_^");

要注意的是通常我们会在上传文件中加上gif的文件头GIF89a去绕过,但是.htaccess文件用这种方法虽然能上传成功,但是无法生效。我们可以在.htaccess文件前面加上。

#define 4c11f3876d494218ff327e3ca6ac824f_width xxx(大小)#define 4c11f3876d494218ff327e3ca6ac824f_height xxx(大小)

这里的原理其实是伪造为xbm文件,xbm文件是一种图片格式的文件。

在php的官方文档中,exif_imagetype()是可以支持xbm类型的文件的。

  • 绕过拼接字符

比如最近的羊城杯上的一道题目,其中部分代码如下:

file_put_contents($filename, $content . "\nHello, world");

这一题的思路是利用.htaccess文件把恶意代码包含进index.php里面,但是在变量$content后面拼接了一个"\nHello, world",这样的话会不符合.htaccess文件的语法,导致服务器报一个500错误,这时候我们可以使用反斜杠先把\n转义,再在加入的恶意代码前面加上一个#注释掉后面的内容,这样的话就可以绕过"\nHello, world",从而使得.htaccess符合语法。

最终payload结果如下:

php_value auto_prepend_fil\e .htaccess#<?php  system('cat /fla'.'g');?>\&filename=.htaccess

这里要注意的是在传参的时候都是要url编码的。

htaccess的常见用法

首先了解一下php_value和php_flag这两个东西

  • php_value:设定指定的值,但不能设定布尔值。

  • php_flag:用来设定布尔值的配置指令。

这两个可以用来设置指令的值,使得在 Apache 配置文件内部修改 PHP 的配置,那么这些指令有哪些呢,比如说auto_prepend_file,display_errors等等,具体的话参考官方给出的:php.ini 配置选项列表

当然上面说的这两个都是可以用于.htaccess中的,同样功能的还有php_admin_value和php_admin_flag,但是这两个无法用于.htaccess中。

下面介绍两个最常见的用法:

特殊编码绕过

如果对文件内容进行过滤了,同时版本php7已经抛弃了

ctf 改变图片高度_CTF中.htaccess文件的利用相关推荐

  1. ctf 改变图片高度_每天一分钟,python一点通(opencv的图片处理方法)

    有网友私信小编说,小编的文章很好,讲解的也很详细,但是有些知识点很深奥,对初学者不是很友好,回想小编的文章虽然几乎每条代码都有介绍,但是很多函数没有太详细,小编后期会重启 <每天一分钟,pyth ...

  2. ctf 改变图片高度_通过CRC32爆破修改图片的宽高 ctf-misc图片隐写

    ** 一.在处理图片隐写题的时候,可能会修改图片原有的宽高,导致图片里面的内容无法正常显示,那么怎么判断它的宽高是否被修改了呢? ** 1.把图片拖进010editor中会发现左下角提示CRC不匹配, ...

  3. php_flag .htaccess,Apache服务器中.htaccess文件的实用配置示例集锦

    .htaccess 是什么? htaccess (hypertext access,超文本访问) 是为网站所有者提供用于控制服务器环境变量以及其它参数的选项,从而增强他们网站的功能的文件.这些文件可以 ...

  4. html 图片防盗链,配置.htaccess文件实现图片防盗链

    配置.htaccess文件实现图片防盗链的方法,闲话少叙直接看代码: 比如你的图片都在 img 目录下,那就在该目录下放一个名为 .htaccess 的文件,内容如下: RewriteEngine o ...

  5. Apache 中 .htaccess 文件设置技巧16则

    .htaccess 文件 (Hypertext Access file) 是Apache Web服务器的一个非常强大的配置文件,对于这个文件,Apache有一堆参数可以让你配置出几乎随心所欲的功能.. ...

  6. Apache服务器中的.htaccess文件的配置

    如何在windows下创建.htaccess文件 首先, 暂且别管.htaccess是什么, 有什么作用, 让我们暂且解决首要问题:如何在windows下创建.htaccess文件. 在windows ...

  7. Apache伪静态(Rewrite).htaccess文件详解以及RewriteCond 规则

    Htaccess(超文本访问)是一个简单的配置文件,它允许设计师,开发者和程序员通过它来改变Apache Web服务器的配置. 这些功能包括用户重定向.URL重写(url rewrite,国内很多称为 ...

  8. 如何用Photoshop批量改变图片的大小

    如何用Photoshop批量改变图片的大小 一. 制作一个改变图片大小的"动作". 1. 首先打开一张要处理的图片,在动作面板中找到"创建新动作"项,弹出&qu ...

  9. 计算机中的文件资源组织方式是什么意思,Windows中的库是什么,以及如何使用它们来组织文件 | MOS86...

    库是最容易被误解的,也是Windows中最有用的功能之一.它们可以帮助用户有效地组织文件和文件夹.通过使用库,您可以构建一个系统,以便始终可以在几秒钟内找到所需内容.不仅如此,您还可以通过点击几下(或 ...

  10. Python 利用百度文字识别验证码、文字、图片并提取图片中文字或数字

    Python 利用百度文字识别验证码.文字.图片并提取图片中文字或数字 Python 利用百度文字识别验证码.文字.图片并提取图片中文字或数字 以下是代码实现, Python 利用百度文字识别验证码. ...

最新文章

  1. 二叉树c语言程序插入某个成员,关于C ++:二叉树:插入节点算法
  2. 数组不能将数值传给int_java数组查找常见情况
  3. boost::pfr::tuple_element_t相关的测试程序
  4. python3.7代码_Centos7源代码安装python3.7,centos7,源码,python37
  5. 51nod1325-两棵树的问题【最大权闭合图,网络流】
  6. Docker系列之二:基于容器的自动构建
  7. python etree详解_使用lxml.etree解析python alexa结果
  8. 5.27 indeed 第三次网测
  9. 使用DOM4J解析大容量XML文件
  10. ApacheCN 翻译/校对/笔记整理活动进度公告 2019.9.20
  11. Java、JSP酒店客房管理系统
  12. 简述算法和程序的区别并举例说明
  13. 【Arduino实验08 红外传感器】
  14. 如何争取APP Store推荐位
  15. 【JAVA虚拟机】java虚拟机
  16. 【ML】Markov Chain Monte Carlo(MCMC)---Slice sampler(切片采样)和Hierarchical Models(层次模型)
  17. Vue+高德地图API的使用(电子围栏)
  18. android串口编程实例_PLC编程由浅到深 | 如何搞懂西门子PLC脉冲输出
  19. 行业分类参考-做所有事情都要归于行业
  20. 01-KNN(K最临近算法)中涉及到的一些小知识点

热门文章

  1. 记我朋友的一次前端面试
  2. PLC控制步进电机在机床自动线中的应用
  3. 美图个性化推荐的实践与探索
  4. Ubuntu 16.04重启Nautilus
  5. Coloring Flame Graphs: Code Hues
  6. 使用@Conditional条件注解
  7. 在Intellij idea中快速重写父类方法
  8. Linux音频驱动-ALSA概述
  9. JM8.6的解码端去方块滤波代码详述
  10. CFS中一些调度参数的实现原理