目录
pass-03(黑名单绕过,php3、php5、phtml)
pass-11(GET型%00截断)buuctf版本,高于5.3.4
pass-01(js验证)
1,fn+f12网络控制台设置里禁用js;
2,上传一张图片,bp抓包修改内容,添加一句话木马,修改文件名为php后缀
pass-02(MIME类型)
BP抓包修image/jpeg
pass-03(黑名单绕过,php3、php5、phtml)
phtml/pht的内容
<script language="php"> eval($_POST['data']);</script>
pass-04(apache解析漏洞)
- .htaccess(前提是http.conf文件中设置了 AllowOverried All ,才能使用.htaccess文件)
在Apache服务器中,AllowOverride
指令用于控制特定目录下的.htaccess
文件中哪些指令是有效的。如果你想限制.htaccess
文件中使用的特定命令,可以通过在httpd.conf
或相应的虚拟主机配置文件中设置AllowOverride
来实现。
例如,如果你想禁止.htaccess
中使用RewriteRule
,可以将AllowOverride
设置为All
除了RewriteRule
<Directory "/path/to/your/directory">
AllowOverride All -RewriteRule
</Directory>
利用方法:(buuctf里未成功)
先上传一个一句话木马,改为jpg/png后缀
再上传一个.htaccess文件,指定上传的jpg/png文件解析为php
<FilesMatch "文件名">
SetHandler application/x-httpd-php
</FilesMatch>
- apache解析文件名是从后往前解析(从后往前解析,遇到不认识的解析规则名就一直往前),用bp抓包修改文件名添加后缀.aaa(不能被识别的解析名称),上传连接
pass-05(大小写绕过)
pass-06(空格绕过)(buuctf里未成功)
pass-07(点绕过)
pass-08(::$data绕过)
连接时记得把::$data去掉,仅限于windows系统(buuctf为linux系统)
pass-09(加后缀)
- 加后缀.jpg/.a
- 点空格点,上传后发现只出现了最后一个点,源码中的
$file_ext = strrchr($file_name, '.');只
截取最后一个.
的位置(buuctf失败)
pass-10(双写名称pphphp)
str_ireplace() 函数只会进行一次删除操作,所以确保只有一个php
.phpphp不可行,因为所有的"php"都会被替换,所以必须只有一个"php"字符存在
pass-11(GET型%00截断)buuctf版本,高于5.3.4
- php版本低于5.3.4
- php.ini里面magic_quotes_gpc=off
- (因为
magic_quotes_gpc
是用于自动转义从外部输入的数据中的特殊字符,以防止SQL注入等安全问题。当magic_quotes_gpc
为ON时,PHP会自动将输入的数据中的特殊字符(如%00
)进行转义处理,这会导致上传的文件名在处理时被截断,从而无法实现预期的文件上传功能)
GET型%00截断
GET型提交的内容会被自动进行URL解码,直接在文件名后面加%00。
pass-12(POST型%00截断)
在POST请求中,%00不会被自动解码,需要在BP中进行编码
两处需要修改,修改后上传拼接路径为../upload/1.php%00/1.jpg
pass-13(图片马)
使用前提判断是否有文件包含函数
如 :include():找不到被包含的文件只会产生警告,脚本继续执行
可以cmd copy,也可以二进制修改
由于题中明确给出使用文件包含漏洞