ctfhub文件上传

文件上传漏洞

所有题目的基本解题思路:上传一句话木马文件,获得管理员权限,之后用hackbar执行命令找到flag,或者木马文件上传成功后用蚁剑链接,添加数据后在里面找到flag文件求解

常见的一句话木马:<?php

@eval($_POST[shell]);

?>

一:无验证

直接上传一句话木马,上传成功后就直接用蚁剑链接,求解flag

二:前端验证

进入题目查看网页源代码,查看允许上传的文件类型

上传允许上传的文件,然后用bp进行抓包,更改文件后缀为.php后放包,用蚁剑进行连接,添加数据后查找flag

三:.htaccess

htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能

进入题目,上传.php文件,发现文件上传不成功,查看网页源代码,会发现一个黑名单,.php文件就位列其中

所以我们先上传shell.txt文件,然后用记事本写一段.htaccess语言代码,保存后修改文件名为.htaccess

并且上传.htaccess文件

会发现上传成功,随后用蚁剑进行链接,求解flag

题解:因为我们上传一个.htaccess文件之后,它会替换掉本地服务器上的源文件,重写规则,使得我们可以上传脚本

例:.htaccess文件中的内容:

·  AddType application/x-httpd-php png

让文件后缀名为.png的文件当作.php文件解析

四:文件头检查

此类题目同样的有白名单,只有名单上的文件类型可以进行上传

尝试将shell.php改为shell.jpg格式上传,显示文件错误,尝试修改为png, gif, jpeg格式上传,都显示文件错误

此时就联想到要检查文件头

常见的文件类型对应的文件头:

jpg:FFD8FF

png: 89504E47

html: 68746D6C3E

………

例:

Winhex打开shell.php ,shell.jpg, shell.png文件后发现三个文件显示一样,查阅资料后发现png,jpg,html等格式下文件的都有特定的文件头

通过剪贴板数据粘贴格式为ASCLL Hex的png文件头89504E47,保存,将shell.php改为shell.png

随后就上传.png文件,用bp进行抓包,更改文件后缀名为.php后放包,然后用蚁剑进行链接,求解flag

五:Mime绕过

它全名叫多用途互联网邮件扩展(Multipurpose Internet Mail Extensions),用来标注网络数据的格式。MIME的常见形式是一个主类型加一个子类型,用斜线分隔。比如text/html、application/javascript、image/png等。在访问网页时,MIME type帮助浏览器识别一个HTTP请求返回的是什么内容的数据,应该如何打开、如何显示。

此类题目直接上传.php文件是不会成功的,所以上传同时用bp进行抓包

并且找到Content-Type值,

例:

把Content-Type值改为image/png,使文件上传时被当作png格式,放包,查看返回内容为上传成功

随后便用蚁剑进行链接,求解flag

六:00截断

00截断的题目同样是存在白名单的,所以要查看网页源代码进行查看可以上传的文件类型

用ctfhub中的00截断题目举例,打开题目直接上传.php 文件是不会成功的

所以在shell.php文件后加上后缀jpg作为文件名更改文件格式,显示上传成功

然后用bp进行抓包,在.php后面加上%00.jpg  这样更改之后放包,会显示上传成功,但是你会发现找不到路径,这个时候可以直接访问url,在url中就可以找到路径了,然后就是用蚁剑链接,后面就是一样的思路

七:双写绕过

  1. 双写绕过:(1)原理:服务器对黑名单中的内容进行处理,如黑名单中有"php"字样,上传文件名为"php" 上传后文件变成"",但仅处理一次,如正常上传一个 .php 文件后缀的因为在白名单中出现会被网页清空后缀名。这时我们可以写两个后缀名 .pcerhp 网页会检测到 cer 后缀并清空,然而清空之后 .php 并不会消失,因为网页代码并没有对这个条件做判断,只清空了 cer ,那么 .php 后缀名被保留在网页中变达到了双写后缀绕过的目的。

(2)使用条件:phpstudy中AllowOverride = All,mod_rewrite模块开启

(3)格式: 直接双写同一个后缀名,如php写为pphphp

            双写不同的两个后缀名,且写在中间的后缀名必须是黑名单中存在或白名单中不存在的,如php,asp,要使php绕过过滤,应写为pasphp

因为此类题型它会过滤掉你的文

文件上传漏洞

所有题目的基本解题思路:上传一句话木马文件,获得管理员权限,之后用hackbar执行命令找到flag,或者木马文件上传成功后用蚁剑链接,添加数据后在里面找到flag文件求解

常见的一句话木马:<?php

@eval($_POST[shell]);

?>

一:无验证

直接上传一句话木马,上传成功后就直接用蚁剑链接,求解flag

二:前端验证

进入题目查看网页源代码,查看允许上传的文件类型

上传允许上传的文件,然后用bp进行抓包,更改文件后缀为.php后放包,用蚁剑进行连接,添加数据后查找flag

三:.htaccess

htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能

进入题目,上传.php文件,发现文件上传不成功,查看网页源代码,会发现一个黑名单,.php文件就位列其中

所以我们先上传shell.txt文件,然后用记事本写一段.htaccess语言代码,保存后修改文件名为.htaccess

并且上传.htaccess文件

会发现上传成功,随后用蚁剑进行链接,求解flag

题解:因为我们上传一个.htaccess文件之后,它会替换掉本地服务器上的源文件,重写规则,使得我们可以上传脚本

例:.htaccess文件中的内容:

·  AddType application/x-httpd-php png

让文件后缀名为.png的文件当作.php文件解析

四:文件头检查

此类题目同样的有白名单,只有名单上的文件类型可以进行上传

尝试将shell.php改为shell.jpg格式上传,显示文件错误,尝试修改为png, gif, jpeg格式上传,都显示文件错误

此时就联想到要检查文件头

常见的文件类型对应的文件头:

jpg:FFD8FF

png: 89504E47

html: 68746D6C3E

………

例:

Winhex打开shell.php ,shell.jpg, shell.png文件后发现三个文件显示一样,查阅资料后发现png,jpg,html等格式下文件的都有特定的文件头

通过剪贴板数据粘贴格式为ASCLL Hex的png文件头89504E47,保存,将shell.php改为shell.png

随后就上传.png文件,用bp进行抓包,更改文件后缀名为.php后放包,然后用蚁剑进行链接,求解flag

五:Mime绕过

它全名叫多用途互联网邮件扩展(Multipurpose Internet Mail Extensions),用来标注网络数据的格式。MIME的常见形式是一个主类型加一个子类型,用斜线分隔。比如text/html、application/javascript、image/png等。在访问网页时,MIME type帮助浏览器识别一个HTTP请求返回的是什么内容的数据,应该如何打开、如何显示。

此类题目直接上传.php文件是不会成功的,所以上传同时用bp进行抓包

并且找到Content-Type值,

例:

把Content-Type值改为image/png,使文件上传时被当作png格式,放包,查看返回内容为上传成功

随后便用蚁剑进行链接,求解flag

六:00截断

00截断的题目同样是存在白名单的,所以要查看网页源代码进行查看可以上传的文件类型

用ctfhub中的00截断题目举例,打开题目直接上传.php 文件是不会成功的

所以在shell.php文件后加上后缀jpg作为文件名更改文件格式,显示上传成功

然后用bp进行抓包,在.php后面加上%00.jpg  这样更改之后放包,会显示上传成功,但是你会发现找不到路径,这个时候可以直接访问url,在url中就可以找到路径了,然后就是用蚁剑链接,后面就是一样的思路

七:双写绕过

  1. 双写绕过:(1)原理:服务器对黑名单中的内容进行处理,如黑名单中有"php"字样,上传文件名为"php" 上传后文件变成"",但仅处理一次,如正常上传一个 .php 文件后缀的因为在白名单中出现会被网页清空后缀名。这时我们可以写两个后缀名 .pcerhp 网页会检测到 cer 后缀并清空,然而清空之后 .php 并不会消失,因为网页代码并没有对这个条件做判断,只清空了 cer ,那么 .php 后缀名被保留在网页中变达到了双写后缀绕过的目的。

(2)使用条件:phpstudy中AllowOverride = All,mod_rewrite模块开启

(3)格式: 直接双写同一个后缀名,如php写为pphphp

            双写不同的两个后缀名,且写在中间的后缀名必须是黑名单中存在或白名单中不存在的,如php,asp,要使php绕过过滤,应写为pasphp

因为此类题型它会过滤掉你的文件后缀名,所以要用到双写绕过的方法,最常见的:pphphp

将原本的文件后缀改为双写的之后进行上传,成功后用蚁剑,后面一样的操作

件后缀名,所以要用到双写绕过的方法,最常见的:pphphp

将原本的文件后缀改为双写的之后进行上传,成功后用蚁剑,后面一样的操作

  • 19
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值