domb

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

上面讲过了黑名单绕过,白名单就是只允许规定的文件后缀能上传,所以要比黑名单安全

 

一、%00绕过(.php终止符.jpg)

原理:白名单过滤肯定是从后往前读取后缀,所以读取到.jpg在白名单里就放通了。

     但是在调用文件的时候读取文件名是从前往后读,所以看到.php后面的终止符的时候就停止读取了,最终读取的文件名的后缀就是.php

这个%00是什么意思呢?看到有%,那么首先就应该想到的是URL编码。然而%00只针对GET传参,所以POST传参不能识别URL编码

原理就是:一般上传的文件不是直接就送到服务器上的,而是先放到临时目录里,然后再重命名(经常我们看到的网页上的图片都是一串数字,那就是重命名之后的),最后再发往服务器

我们可以看到,最后重命名之后的文件的存储路径是用的GET传参

 

这个就是上传包

这个时候就用%00截断

来看上传之后的图片地址:虽然最后有数字.jpg但是已经不会执行了

 

 

 

二、0x00截断

其实就是post传参的00截断,因为post传参不走URL栏,所以就不用%00

 

在这里我们先这样修改,然后再进入hex界面

将a对应的十六进制值修改为00就可以了

 

 

 

三、图片马绕过

利用cmd命令:copy 123.jpg/b + aaa.php 666.jpg 可以将aaa.php中的一句话木马写入123.jpg,生成一张长得一模一样的图片666.jpg,再配合解析漏洞就可以拿到shell

 

 

四、二次渲染

二次渲染就是会改变图片的一部分十六进制数值,所以图片马中的马最好写在第三四排,并且最好用.gif

 

 

 

五、条件竞争绕过(针对先上传再检测的web网站)

简述一下理想模型:上传一个1.php的文件,1.php文件里的内容是生成2.php(木马)的语句,在网站删除1.php之前,访问到它,然后就生成了2.php,随后1.php被删除了,但是2.php还存在,因为2.php不是通过上传来的,所以可以绕过检测机制。

梦想照进现实,我们需要抓一个上传包,和一个访问包,然后用BP疯狂的跑就行了

需要用到语句:file_put_contents('2.php','<?php eval($_REQUEST[8])?>');

 

posted on 2021-12-07 20:39  domb  阅读(9787)  评论(1编辑  收藏  举报