ctfhub 文件上传

目录

无验证 

前端验证

.htaccess

MIME绕过

00截断

双写后缀

文件头检查


无验证 

这里上传的文件没有限制,直接上传一句话木马

5e998af277d3492aa08ddd06e6c76f8b.png

显示出相对路径

d4046d7ea74140ba80d55e2260f03e4f.png

接下来写post请求查看flag的文件

426506ed19464be6a1c116ec69ba3759.png

可以看到flag_197015395.php,cat即可,在源代码里面就有flag

9ccebcae078e4daeb49716ae5cb5f37c.png

前端验证
 

上传php文件,前端校验不允许上传php文件
14d6e408b21f491a99d5d6a4ea9f46e0.png

 看到题目提示了js前端验证,前端靠JavaScript来进行验证,所以只要禁用JavaScript的功能就可以了

e3962d95904d4df5b56cf205c2f3ce2b.png

abb9a13bd46a42cd81201954f6282140.png

可以看到上传成功,接下来和无验证一样的操作就可以了
c206bff5976e45d890c380d448cde122.png

cabecf5f9c06428fbb4c3d5b0c5ba746.png

d4d28901cdd74e16ab132592e9719c50.png

.htaccess

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

先上传.htaccess文件,上传成功后,它会将我们上传的jpg文件解析成php文件

9e39599a8f1a4a149f6607d96b73121f.png

接着上传图片马 a.jpg
cc012f10c8964f7e844384b399cf8e79.png 可以看到上传成功,接下来和无验证一样的操作就可以了

 f9f232f58361474092f51c5b59fdfab2.png

MIME绕过
 

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


e8ea4c1102a94b399257b647229ac9fd.png

 这里就需要用BP抓包将Content-Type修改为 image/jpg, 然后发送数据包

163dcaf8fbd1459d9ad265bd90cfbb18.png

可以看到上传成功,接下来和无验证一样的操作就可以了
dbf74c8c1b294c929b67f31eff76cfae.png

 f939afb9b76843c4830eee4ad4292e3d.png

00截断

基础知识:
php是基础c语言实现的,C语言中认为0x00是结束符号,文件上传之所以可以00截断,是因为白名单判断的时候是判断后缀,在进行路径拼接的时候用的其他值,然后在进行move_uploaded_file的时候,这个函数读取到hex值为00的字符,认为读取结束,出现00截断

利用条件:
php版本小于5.3.4
magic_quotes_gpc为off(默认为0n)

首先我们上传一个php文件,进行抓包
4aaa90d352c54a979a7d9fd051d61509.png
 

 修改filename="a.php%00.jpg"

/?road=/var/www/html/upload/a.php%00.jpg
051705ae306c426d94cb22cacfbfe430.png

 在road后添加上a.php%00.jpg    road就会使后面部分失去效果,上传后的路径即被固定

forward可以看到上传成功,接下来和无验证一样的操作就可以了

43fc968a37e8431997761da4c42311b7.png


 因为我们修改了road,所以路径就是/upload/a.php

c181dac210464d04ac0ee2f4a1150494.png

双写后缀

看下源码,这里使用了str_ireplace函数将我们的后缀替换成了空,但是只替换一次,所以双写绕过即可
b93c463ac4a340c199b8a24d0d533ac9.png
 

 上传一个php小马,修改filename="a.pphphp"

af6b2dbc65544536bb07c26e7db7e2eb.png

上传成功,我们看到文件后缀为php,然后用蚁剑连接找到flag
0d4f18f475484700bd782bc55331986c.png

 91603fb97bdb4a0db1d7dd24cfd57fd7.png

文件头检查

直接先传马,抓包
这里把Content-type改为 image/jpg
再在文件内容首部添加GIF89a表示是一个GIF89a图形文件

 b27aa5aa8bd24cf29d6c2203dc55a0a9.png

 forward可以看到上传成功

57917336deae4aaab8d8add93a0ada07.png

 然后用蚁剑连接找到flag

b18f12f4e9df42ad8bf679c0181dacd6.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值