目录
[1 前端和js校验](#1 前端和js校验)
[2 .](#2 .)
[2.1 .htaccess(伪静态)](#2.1 .htaccess(伪静态))
[2.2 %00截断 (php5.2)](#2.2 %00截断 (php5.2))
[2.3 user_init_](#2.3 user_init_)
[3 图片码防御](#3 图片码防御)
[4 竞争型漏洞](#4 竞争型漏洞)
1 前端和js校验
关闭JS的代码,上传PHP


抓包改包
思路:上传文件的时候将正常的PHP后缀改成白名单允许的后缀,然后通过抓包的方式修改文件的后缀为php,注意content---type这个,因为一般会判断上传的类型,需要改一下
2 .
那我们想有没有一种就是在程序中有被认为是空格,但是进入系统后,系统就把他认定为是没有后面那个空格?(有这种但是只有在windows系统才会有)
这关写了黑名单,trim去空格等过滤限制
php
if (file_exists(UPLOAD_PATH)) {
$deny_ext = array('.asp','.aspx','.php','.jsp');
$file_name = trim($_FILES['upload_file']['name']);
$file_name = deldot($file_name);//删除文件名末尾的点
$file_ext = strrchr($file_name, '.');
$file_ext = strtolower($file_ext); //转换为小写
$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
$file_ext = trim($file_ext); //收尾去空
2.1 .htaccess(伪静态)
这个方法就是将.htaccess这个文件后缀,不管你上传的是jpg,还是txt,都会最终把他解析为php
2.2 %00截断 (php5.2)
2.3 user_init_
也是有可能实现的,但是必须要当前的系统下面有一个php的文件,才能发挥作用
2.4
这个是因为运维或者开发人员修改了nginx或者apache的配置项,让php2,php3也能解析为php
3 图片码防御
如何防御图片码?
1,将文件上传的文件夹的可执行权限取消掉
2,php中有一个函数可以将上传的图片码打乱,让图片码消失
4 竞争型漏洞
代码问题:把上传文件写在了检测文件之前,这之间就会有几十ms的空隙,我们就可以在shell里面(图片码)用写文件的方式将文件的木马写在他的上一级目录,虽然最后会删除我上传的文件,也有几十ms的时间,但是我的木马由于是写在上一级目录的,所以我的有害文件已经上传成功了
因为是先上传再检测,那我不装了,直接上传php文件

打开bp,抓包,然后用爆破模块,直接发送,看看能不能生成fy.php
思路:
大概流程就是:先在php文件中写一个一句话木马(一定要是创建一个新的目录上一个目录最好,写入数据)如上,然后打开抓包,上传此php文件抓包,送至inturder模块上传,开始竞争一直刷新我的访问upload的文件,一定会成功
容易出现的问题:
最容易出现在商场和订单,就是多线程处理的时候,当我买完最后一个商品还没有下单的时候,下个线程又来了就会出现买一次买很多的这种情况