title: CTFhub之web安全
tags: ctfhub
categories: CTF
author: Abyssaler


1.文件上传之双写后缀

双写绕过原理

服务端对黑名单中的内容进行处理,且仅处理一次,所以可以通过双写后缀绕过.如,黑名单中有"php"字样,上传文件名为"1.php" 上传后文件变成"1.".

如果直接上传111.php的话,会过滤后缀

想到用burp suite抓包改后缀

如图,一开始我想改成111.phpphp,想只过滤一次的话还剩一个php就成功了,结果被无情打脸

后来得知服务端会对后缀名中所有的php进行过滤,所以修改思路

改成这个样子

服务端就只会过滤.pphphp中间的php,剩下的就是111.php了

最后用蚁剑连接

找到flag

2.文件上传之00截断

前置知识:

文件上传漏洞“%00截断”绕过讲解":
https://www.fujieace.com/penetration-test/file-upload-00.html

原理:如果是白名单检测的话,我们可以采用00截断绕过。00截断利用的是php的一个漏洞。在 php<5.3.4 版本中,存储文件时处理文件名的函数认为0x00是终止符。于是在存储文件的时候,当函数读到 0x00(%00) 时,会认为文件已经结束。

例如:我们上传 1.php%00.jpg 时,首先后缀名是合法的jpg格式,可以绕过前端的检测。上传到后端后,后端判断文件名后缀的函数会认为其是一个.jpg格式的文件,可以躲过白名单检测。但是在保存文件时,保存文件时处理文件名的函数在遇到%00字符认为这是终止符,于是丢弃后面的 .jpg,于是我们上传的 1.php%00.jpg 文件最终会被写入 1.php 文件中并存储在服务端。

直接看题

这里直接上传一句话木马文件会显示文件类型不匹配

按F12打开开发者工具查看源代码,发现白名单

分析源代码

if (!empty($_POST['submit'])) {$name = basename($_FILES['file']['name']);$info = pathinfo($name);$ext = $info['extension'];$whitelist = array("jpg", "png", "gif");if (in_array($ext, $whitelist)) {$des = $_GET['road'] . "/" . rand(10, 99) . date("YmdHis") . "." . $ext;if (move_uploaded_file($_FILES['file']['tmp_name'], $des)) {echo "<script>alert('上传成功')</script>";} else {echo "<script>alert('上传失败')</script>";}} else {echo "文件类型不匹配";}
}
$_FILES 解释(搬自php手册)
$_FILES 数组内容如下:$_FILES[‘myFile’][‘name’] 客户端文件的原名称。$_FILES[‘myFile’][‘type’] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"。$_FILES[‘myFile’][‘size’] 已上传文件的大小,单位为字节。$_FILES[‘myFile’][‘tmp_name’] 文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在 php.ini 的 upload_tmp_dir 指定,但 用 putenv() 函数设置是不起作用的。$_FILES[‘myFile’][‘error’] 和该文件上传相关的错误代码。[‘error’] 是在 PHP 4.2.0 版本中增加的。下面是它的说明:(它们在 PHP 4.3.0 之后变成了 PHP 常量。)basename() 函数:返回路径中的文件名部分。
$_name 是上传的文件名加后缀
$_ext 得到的就是后缀名
重点就在 $des这个变量
得到的完整路径是 GET[‘road’]+随机数+日期加前面获得的后缀名
————————————————
版权声明:本文为CSDN博主「林一不是01」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45785288/article/details/108412899

burp抓包后我们可以看见

通过题目提示,此题可以用00截断来实现绕过上传验证,所以直接上传一个PHP一句话木马文件,在请求的时候开启抓包,修改

根据之前的题目。我们可以判断出我们上传的文件摆放在upload目录下面。我们直接用蚁剑连接就行

3.文件上传之MIME绕过

前置知识:

MIME概述:

​ MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。

​ 它是一个互联网标准,扩展了电子邮件标准,使其能够支持:

​ 非ASCII字符文本;非文本格式附件(二进制、声音、图像等);由多部分(multiple parts)组成的消息体;包含非ASCII字符的头信息(Header information)。

MIME详解:

https://www.runoob.com/http/mime-types.html

什么是MIME类型校验

​ MIME类型校验就是我们在上传文件到服务端的时候,服务端会对客户端也就是我们上传的文件的Content-Type类型进行检测,如果是白名单所允许的,则可以正常上传,否则上传失败。

开始做题:

还是直接上传一个一句话木马,发现文件不匹配

通过开发者工具也没找到白名单

试着上传一个jpg文件,提示上传成功,证明白名单中有jpg

将木马伪装成jpg上传再通过bp改文件后缀

上传成功了

还有第二种办法

既然题目提示了是MIME绕过,那就用修改Content-Type类型的方法来试试

首先通过查询得知jpeg文件的MIME类型是image/jpeg

如图,上传的是php文件,通过在bp中修改Content-Type为image/jpeg来绕过

接下来就是常规操作了

4.文件上传漏洞之.htaccess

前置知识:

.htaccess详解

https://cloud.tencent.com/developer/article/1824057

什么是.htaccess?

​ .htaccess(超文本访问)是许多Web服务器根据目录应用设置的有用文件,允许在运行时覆盖Apache服务器的默认配置。使用.htaccess,我们可以在运行时轻松启用或禁用任何功能。通过htaccess文件,可以帮助我们实现:网页301重定向,自定义404错误页面,改变文件扩展名,允许或组织特定的用户或者,目录的访问,禁止目录列表,配置默认文档等功能。

​ .htaccess是一个完整的文件名,不仅仅是文件的扩展名。

​ 使用.htaccess配置时要注意,任何小错误都可能会阻止整个网站。很可能我们在.htaccess文件中会遇到状态码为500的错误。

.htaccess的用途?

我们可以使用.htaccess在运行时完成各种任务,下面列出了.htaccess的一些最常用的用法。

1、重定向或重写URL

使用.htaccess,我们可以轻松地将用户从一个URL重定向到另一个URL。此外,我们还可以在浏览器窗口中不更改URL的情况下将URL指向其他URL。

2、启用密码保护

使用.htaccess,我们可以在整个站点或特定目录访问上启用基本的HTTP身份验证。它可以防止未经授权访问数据。

3、定义自定义错误页面

当我们的网站在后端遇到任何错误时,Web服务器会显示每个错误的预定义错误页面。我们可以重新设计自己的错误页面,并在网站发生错误时向最终用户显示。

4、允许或拒绝用户

我们可以简单地限制任何用户访问基于该IP地址的特定网页的整个网站。可以简单地允许我们的安全页面仅从特定的ips访问。在这种情况下,如果任何用户试图从未经授权的页面访问安全页面都将获得错误页面。

5、更改网址

.htaccess广泛用于更改网站的URL,使其简单易用。我们可以轻松转换在网络浏览器中显示的网址。

具体实现:
1、上传.htaccess文件至服务器上传目录,此时apache在解析该目录下的php时将按照文件要求。只要文件名匹配到所定义的字符串,就会将该文件当作php解析。<FilesMatch "shana">
SetHandler application/x-httpd-php
</FilesMatch>2、上传.htaccess文件设置的关键字的文件名,即上传一个黑名单没有过滤的随意后缀名文件,但文件名中一定要包含shana,如"shana.jpg",内容为一句话木马。此时"shana.jpg"会被Apache当作php解析。
————————————————
版权声明:本文为CSDN博主「欧阳大仙萌萌哒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/shana_8/article/details/104827642

开始做题

思路1

根据htaccess文件的特性,这道题可以重写文件的解析规则进行绕过。先上传一个名为.htaccess文件,将原有的文件替换掉。其内容如上

上传.htaccess,此时有111的文件当作php文件解析。

试着上传111.php

发现不匹配

将111.php改为不在黑名单中的后缀名

上传成功

蚁剑连接

思路2

AddType application/x-httpd-php .txt

意思是将.txt后缀的文件当成php解析

上传该文件

再上传111.txt

连接蚁剑

5.文件上传漏洞之文件头检查

前置知识

文件头检查是指当浏览器上传到服务器的时候,白名单进行的文件头检测,符合,则允许上传,否则不允许上传。

 我们都知道,文件的扩展名是用来识别文件类型的。通过给他指定扩展名,我们可以告诉自己,也告诉操作系统我们想用什么方式打开这个文件。比如我么会把.jpg的文件默认用图片显示软件打开,.zip 文件会默认用解压软件打开等等。然而,扩展名完全是可以随便改改的。我们可以给文件设置一个任意的扩展名,当然也可以不设置扩展名。这样一来我们就不能了解到这个文件究竟是做什么的,究竟是个什么样的文件。我们或许也会疑惑,为什么一个软件,比如视频播放器,就能用正确的方式打开.mp4 .rmvb .wmv 等等的视频?事实上,所有的文件都是以二进制的形式进行存储的,本质上没有差别。之所以使用的方法不同,只是因为我们理解他的方式不同。**在每一个文件(包括图片,视频或其他的非ASCII文件)的开头(十六进制表示)实际上都有一片区域来显示这个文件的实际用法,这就是文件头标志。**文件签名一般都在文件的头部,如果你用十六进制方式查看文件,你就可以看到文件的一些签名信息。如用uestudio工具以十六进制方式查看zip格式的文件,其文件内容头部有50 4B 03 04这样的十六进制信息。同理jpg文件状况有FF D8 FF E0 xx xx 4A 46这样的十六进制信息,其实这此十六进制都是表示一些特殊字条。Linux下我们可以用file命令直接查看文件的实际格式,但是他本质上也是利用文件头标志来进行文件类型判断的。下面就简要介绍下手动判断文件真实类型的方法。
————————————————
版权声明:本文为CSDN博主「剑客 getshell」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45588247/article/details/119592213

直接做题

按照惯例直接上传

根据题目,应该是要做一个图片马,因为检测的是文件头,而不是后缀名

我们先创造一个名为1.png的图片,然后写一个名为1.php的一句话代码,把他们放到同一目录下,用cmd生成一个名为2.php的图片马

copy 1.png/b + 1.php/a 2.php命令解释:
使用CMD制作一句话木马。
参数/b指定以二进制格式复制、合并文件; 用于图像类/声音类文件
参数/a指定以ASCII格式复制、合并文件。用于txt等文档类文件
copy 1.jpg/b+1.php 2.jpg
//意思是将1.jpg以二进制与1.php合并成2.jpg
那么2.jpg就是图片木马了。

修改格式

再用蚁剑连接

方法二

制作一个图片马

上传,抓包,改后缀

成功

蚁剑连接成功

6.文件上传之前端验证

前置知识

漏洞原理

​ Web应用系统虽然对用户上传的文件进行了校验,但是校验是通过前端javascript代码完成的。由于恶意用户可以对前端javascript进行修改或者是通过抓包软件篡改上传的文件,就会导致基于js的校验很容易被绕过。

判断是否存在前端js绕过漏洞:

​ 按F12(或者:在网页空白处"右击"–>选择:“检查”)打开调试面板,选择网络,然后上传图片文件和非图片文件,然后对这两个文件的变化进行对比,如果网络中没有数据变化,说明存在js前端验证漏洞,如果有变化说明不存在。(有变化说明,前端没有做验证,是把文件传输到后台,在后台进行验证的,所以才会有网络请求。)

直接做题

方法一:

国际惯例

查看网页源码,得知白名单

直接抓包改后缀

上传成功

蚁剑连接成功

方法二:

分析前端代码得知它是用js代码实现的过滤,可以考虑直接禁用浏览器的js代码使用来绕过

直接在chrome浏览器中禁用js(其他浏览器可通过插件实现)

此时就能直接上传php木马了

7.文件上传漏洞之无验证

这题是文件上传,无验证,也就是说不会对我们上传的文件进行检测过滤,于是可以直接上传一句话木马文件

<?php$a=$_REQUEST[1];eval($a);
?>

直接上传一句话木马

蚁剑连接成功

拿到flag

8.签到题

欢迎来到CTFhub大家庭!

9.密码口令之弱口令

常用的字典就是top100弱口令、top1000弱口令之类的字典

解题思路

打开看到管理后台几个大字,猜测用户名可能是admin,密码可能是password之类的

先试试admin,password

发现错误。。于是用bp的狙击手模式进行爆破,具体操作可以在本站找到

bp攻击模式介绍

https://abyssaler.github.io/post/%E6%9A%B4%E5%8A%9B%E7%A0%B4%E8%A7%A3

简单爆破了一下,居然没有找到

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RQTunMCF-1669101831492)(C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20221118192411514.png)]

扩大字典范围,再次爆破

爆了1w个弱口令了没爆出来,时间用完了。。。直接下一个题目吧

10.密码口令之默认口令

首先收集网页信息,发现是北京亿中邮公司产品,再结合题目默认口令,于是去网上搜索

北京亿中邮信息技术有限公司邮件网关的默认口令

成功破解

11.信息泄露之目录遍历

题目考点

由于配置错误导致网站的目录可被遍历,一般该类漏洞可以为后续利用提供一些信息上的帮助

解题思路

直接点击开始寻找,出现这个界面

挨个遍历就找到flag了


Eki6aL0-1669101831492)]

爆了1w个弱口令了没爆出来,时间用完了。。。直接下一个题目吧

10.密码口令之默认口令

[外链图片转存中…(img-Fb7asr12-1669101831493)]

首先收集网页信息,发现是北京亿中邮公司产品,再结合题目默认口令,于是去网上搜索

北京亿中邮信息技术有限公司邮件网关的默认口令

[外链图片转存中…(img-PN5z7sBZ-1669101831493)]

成功破解

[外链图片转存中…(img-Hu5W6aM6-1669101831493)]

11.信息泄露之目录遍历

题目考点

由于配置错误导致网站的目录可被遍历,一般该类漏洞可以为后续利用提供一些信息上的帮助

解题思路

[外链图片转存中…(img-0dr7kbu2-1669101831493)]

直接点击开始寻找,出现这个界面

[外链图片转存中…(img-mAALsZGB-1669101831494)]

挨个遍历就找到flag了

[外链图片转存中…(img-4yLWLd8f-1669101831494)]

[外链图片转存中…(img-ymuLPAuC-1669101831494)]

CTFhub之web练习相关推荐

  1. Ctfhub解题 web RCE

    Ctfhub解题 web RCE 1. eval执行 2.文件包含 3.php://input 4.读取源代码 5.远程包含 6.命令注入 7.过滤cat 8.过滤空格 9.过滤目录分隔符 10.过滤 ...

  2. CTFHub技能树web(持续更新)--密码口令--弱口令

    弱口令 这道题很简单,因为提示了弱口令,经过尝试,明户名是admin,密码是123456,但是我们如过按照正常的结题思路的话,应该是先尝试几个常用的弱口令,都不对,进行爆破,那么我们讲一下爆破的过程, ...

  3. CTFHub技能树web(持续更新)--密码口令--默认密码

    默认密码 打开先抓包,发现验证码并不是前端验证,而是在后端,并且回包里面也没有,图片型验证码爆破还是有点麻烦的,感觉一下没了思路,参考了大佬的wirte up,发现居然去网上搜索这个系统的默认密码,好 ...

  4. CTFHub技能树web(持续更新)--web信息泄露--目录遍历

    目录遍历 打开网页,点击寻找flag,发现4个目录,我们先随便点击一个,看看有什么变化: 我们随便点击了一个1,发现url后面对了个1,并且又出现了四个文件目录,再试试: 我们有点击进去了一个,发现u ...

  5. CTFHub技能树web(持续更新)--web前置技能(HTTP协议)--302跳转

    302跳转 首先题目很明显的告诉我们存在页面重定向,所以我们现抓包: 在历史记录里面我们看到了这个302跳转,在他的回包里面,我们看到了这个Location是index.php,那么我们登陆到这里面看 ...

  6. CTFHUB-技能树-WEB通关

    Web 题目来自ctfhub技能树web部分,截至2020年11月11日题目更新 Web前置技能 操作系统 (空) 数据库 (空) HTTP协议 请求方式 HTTP 请求方法, HTTP/1.1协议中 ...

  7. 从0到1学习CTF WEB

    从0到1学习CTF WEB web前置技能 信息泄漏 密码口令 SQL注入 基础比较薄弱,准备逐题刷CTFHub的web类型题目顺便学习一下web方面的安全知识. web前置技能 1.请求方式: 隐藏 ...

  8. 春季学习报告 4.12

    本周主要是 整理了一下笔记和 完善了 一些些想法 目前ctfhub的web方面所有题目已经完成 包括漏洞探索 sql 文件上传 rce 密码等等 基本上可以算入门了 web进阶方面,因为目前手里缺少l ...

  9. CTFHUB技能树之Web

    web web前置技能 参考链接 -操作系统 -数据库 -HTML/CSS -程序语言 HTTP协议 0x01 请求方式 1)HTTP Method 是可以自定义的,并且区分大小写 可以通过抓包更改其 ...

  10. CTFHUB学习题解Web(1)- 前置技能(持续更新整理)

    注: 1.是个正在学习的新手,连脚本小子都不够格 2. 很多题目都很基础,但是都做了详细截图 3. 题库尚不完全,没有内容的分支先直接跳过,等题库更新再做添加 4. 大标题为版块名,小标题为题目名 5 ...

最新文章

  1. 87岁的老奶奶喜欢用windows画图程序作画,而且画得还贼好!
  2. (转)MySQL索引原理及慢查询优化
  3. 计算机精英协会考核题 —— 第二题:蛇形填数
  4. Feign-2覆写Feign的默认配置
  5. ejb构建_如何使用单例EJB,Ehcache和MBean构建和清除参考数据缓存
  6. 计算机网络——链路层之停止等待协议
  7. 饭圈出征?《流浪地球》影迷给豆瓣App打一星:来啊互相伤害
  8. 【Kafka】kafka OutOfMemoryError: Direct buffer memory Java heap space
  9. Spring Boot : springboot项目混淆方案
  10. java 枚举获取key_「Java必修课」HashMap性能很好?问过我EnumMap没
  11. 判断一个整数是否是回文数
  12. (转)AIX的Dump文件学习笔记
  13. java动态代理模式
  14. linux 命令(7) df
  15. WM_CLOSE、WM_DESTROY、WM_QUIT及各种消息投递函数详解
  16. 漏斗模型_绘制漏斗图
  17. 创建一个Student 类 包含属性有 序号 姓名 年龄 生日 提供对应的setter/getter 创建对象,完成赋值(setter赋值和构造方法赋值) 在控制台输出学生对象的信息
  18. Java8 Collectors.joining() 详解
  19. 做淘宝产品标题要找蓝海关键词
  20. 使用 spacedesk 与 parsec 让安卓平板 或者电脑 作为电脑的拓展屏 的简单介绍

热门文章

  1. 智能视频生成:阿里系的诸多成果
  2. 模型的矛盾:工业界 vs 学术界
  3. linux基本命令操作(转)
  4. Java中的bridge method(桥接方法)
  5. 闲来无事能干嘛 用Python来玩诗歌接龙
  6. Python基础学习(面对对象)
  7. 湖水分层matlab,湖水温度变化模型.doc
  8. P4012 深海机器人问题
  9. Multisim的使用
  10. Dijkstra算法实现--铁路网出行规划