domb

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

一句话木马:<?php eval($_REQUEST[8])?>

1、前端验证绕过

前端对文件的后缀进行了筛选,只允许.jpg .png .gif后缀的文件上传,所以就直接上传.jpg的图片马,然后抓包,将文件后缀改为.php

 

还有一种更完美的方式

1、先查看网页源码,然后复制到记事本中

2、在记事本中把所有的JS代码删除,保存

 

3、修改代码中的action标签:规定当提交表单时,向何处发送表单数据

 

但是当我们不知道这个地址可以抓包看,这两个字段组合起来就行了

 

4、修改好之后保存,然后用浏览器打开刚才的记事本

没有JS的代码就是这个样子,但是功能还是齐全的

 

5、上传完之后可以看到完整的返回页面

 

 

 

 

 

 

2、Content-Type绕过

和1类似,直接抓包修改后缀名即可

 

 

3、特殊名字绕过

对上传的文件的后缀进行了过滤,.asp .php .aspx .jsp都无法上传,但是默认状态下.php3,.php4,.php5,.phtml 都是会被解析为php的 ,就相当于可以换个名字,人还是原来的人,所以直接将上传的文件的后缀改为.phtml最好

 

 

 

4、.htaccess文件绕过

.htaccess是什么?全称是Hypertext Access(超文本入口)  .htaccess文件也被成为分布式配置文件,提供了针对目录改变配置的方法,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。

.htaccess功能: 文件夹密码保护、用户自定义重定向、自定义404页面、扩展名伪静态化、禁止特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表 很可惜,这么一个强大的功能默认是不开启的

 

首先,新建一个.htaccess的文件,在文件中写入AddType application/x-httpd-php .jpg  [这个指令的作用是将 .jpg的文件改为 .php]

(如果无法创建这种空文件名的文件可以用cmd改 ==>> ren test.txt .htaccess

然后我们就可以先上传一个.jpg的图片马,然后再上传.htaccess的文件,然后在有.htaccess的文件夹内.jpg就会被解析为.php的文件,然后上传的图片马就可以发挥作用了

 

 

 

5、大小写绕过

只有非常老的Web容器才会区分大小写,现在一般的web容器都不会区分大小写

比如说把.php换成.PHp

 

 

6、文件后缀(空格)绕过

若.php在黑名单中,可以抓包修改成.php ,上传成功后会自动省略多的空格

 

 

7、文件后缀(点)绕过

和6类似,把空格换成 . ,windows的特性会自动省略最后的 .

 

 

8、windows文件流绕过 ::$DATA

(这里利用到了NTFS交换数据流(ADS),ADS是NTFS磁盘格式的一个特性,在NTFS文件系统下,每个文件都可以存在多个数据流。通俗的理解,就是其它文件可以“寄宿”在某个文件身上,而在资源管理器中却只能看到宿主文件,找不到寄宿文件。)

TIPS:在cmd中输入 echo 123456>>a.txt:b.txt这句话的作用是把 123456 写入 a.txt:b.txt中,但是你只能在相应的文件夹中看到a.txt而且内容是空的

想要查看写入内容的话就用notepad a.txt:b.txt

所以回到正题::$DATA就是默认不修改文件流的情况,a.txt::$DATA也就是a.txt本身了。最后得出结论a.txt::$DATA和a.txt是等价的,就可以用a.txt::$DATA绕过。

 

 

9、构造文件后缀绕过

比如网页源代码会依次检查最后一位是不是.和空格,并且没有循环,则可以构造. .(点空格点)来绕过

 

 

10、双写绕过

有些时候会检查有没有 php字符出现,若存在则直接替换为空,并且没有循环,这个时候就可以用.pphphp的后缀绕过

 

posted on 2021-12-04 20:36  domb  阅读(1548)  评论(0编辑  收藏  举报