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)]