training-4
week3-4(1)
(CTFHub)
00截断
感觉有点乱,稍微总结一下
文件上传(检测):
前端JS检测(无法直接抓包)
1
2
3法一:将JS中与检测功能相关的东西删去
法二:禁用JS
法三:绕过JS之后再更改(抓包改filename为php文件)后端(filename传至后端由
$_FILES[‘upload_file’][name]
这类的变量进行接收,接收时会将%00后面的截断)1、文件类型(MIME类型)【根据获得MIME类型的途径分为】
Content-Type检测
1
2
3
4法一:直接传php文件,抓包改Content-Type
法二:先传png文件,抓包改filename后缀
总之最后的MIME类型必须是允许的文件头检测
使用getimagesize()函数检测图片文件头
1
2
3
4添加上文件头即可(一般用gif,添加方便)
gif(GIF89a) : 47 49 46 38 39 61
jpg、jpeg : FF D8 FF
png : 89 50 4E 47 0D 0A
2、path参数检测
- 可控:前面老老实实,最后上传路径直接改成xx,php完事
(例如本题) - 不可控:filename里做00截断,对路径也会起截断作用(此时路径组成有filename)
3、文件扩展名检测
白名单检测
1
2
31、老老实实对上传路径进行%00截断
(如果对filename进行00截断,在之后的文件后缀检测中00截断会发生,得到的后缀会是php,会被拦截)
2、有文件包含就文件包含黑名单检测
1
双写、换别的后缀...
4、内容检测
像是检测
<?php
之类的
解题:
看源代码,php语言,判断是后端-白名单检测
1 | <!-- |
00截断
1 | POST /?road=/var/www/html/upload/hacker.php%00 HTTP/1.1 |
只留“hacker.php”后面的都不要
蚁剑连接用的url(注意删去中间的一些乱七八糟,此处填写相对路径)
1 | http://challenge-de5fba3e15fceabc.sandbox.ctfhub.com:10800/upload/hacker.php |
得到flag~
p.s. 记录一下自己的心路历程。。。
一开始想验证一下在filename里加00截断还是会被ban的,之后便一发不可收拾。。。
1 | filename=“hacker.php%00.png” |
居然显示上传成功了
再一次懵圈T-T
不是说后端检验的时候会发生00截断 取的$ext
会是php吗?应该会ban呀!
然后我就苦思冥想查资料查资料查资料
在这个过程中金币慢慢被花光,被迫每天签到省吃俭用
后来在蚁剑里看到改filename上传进来的都是png文件
我甚至开始怀疑00截断不会在这块进行
正当最后无奈想要放弃的时候
在关掉一个个网页的过程中想着最后再看一遍的时候
看到了\0
!难不成是格式用错了
突然又想起这句话
1 | "绕过方法: |
!
恨,很早就看到这个了但没重视
果然(第一次因为看到文件类型不匹配 感到高兴)
每个点都不能放过
无验证
上传一句话木马php文件
无限制,上传成功,显示路径
蚁剑连接,得到flag
前端验证
查看源代码,照着白名单上传,抓包改一下后缀
1 | var whitelist=new Array(".jpg",".png",".gif"); |
上传成功,得到flag
文件头检查
在文件里加一个文件头(GIF89a)
上传成功,得到flag
MIME绕过
(跟上一题步骤一样也能绕过)
MIME是描述消息内容类型的标准,浏览器解析文件时会按照MIME类型进行解析
这里是MIME限制了可解析文件类型,我们上传它原本不允许的php文件,抓包改一下它的MIME类型(Content-Type: image/jpg)即可让浏览器以它允许的文件类型的解析方式对文件进行解析,之后照旧。
得到flag~
.htaccess
.htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令。
.htaccess负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能
.htaccess的用途范围主要针对当前目录。
如果目标环境开启了 .htaccess 并且上传的黑名单没有限制 .htaccess 文件的话,我们便可以先上传 .htaccess 文件,对目标环境的目录进行相应的配置,然后再上传图片马,使图片的 PHP 恶意代码得以被直接解析执行。下列指令任选其一:
- SetHandler 指令:强制将所有匹配的文件被 PHP 处理器处理并解析:
1 | <FilesMatch "images.png"> |
- AddType 指令:将给定的文件扩展名映射到 PHP 的内容类型
1 | Addtype application/x-httpd-php .png |
这两种配置都可以使我们上传的非 PHP 类型的 Webshell 被当做 PHP 直接解析
But
如果要上传.htaccess文件绕过检测的话,使用GIF89a的文件头会导致.htaccess文件无法生效
如果存在内容过滤,且php版本不是5.x(script标签限制),则需要使用base64编码绕过。
.htaccess
文件:1
2
3Addtype application/x-httpd-php .gif
php_value auto_append_file "php://filter/convert.base64-decode/resource=hacker.gif"
贴链接.htaccess
解题:
上传.htaccess文件,让png文件被php处理器处理解析
上传图片马(png)
得到flag
双写绕过
源代码
1 | <!-- |
会把黑名单替换成空
上传成功,得到flag
- Title: training-4
- Author: dawn_r1sing
- Created at : 2023-11-16 21:59:15
- Updated at : 2023-11-16 22:02:23
- Link: https://dawnrisingdong.github.io/2023/11/16/training-4/
- License: This work is licensed under CC BY-NC-SA 4.0.