代码文件中包含一个数组或者列表,包含一些合法的字符或者字符串
如何确认:上传一张图片与一个自己构造的后缀,如果只能上传照片,不能上传其他后缀文件,说明是白名单检测
绕过方式:可以利用00截断的方式进行绕过,包含%00截断与0x00截断。
%00截断:%00是一个url编码,url发送到服务器后会进行解码,这时还没有传到验证函数,也就是说验证函数里收到的
不是%00字符,而是%00解码后的内容,即解码成了0x00,在url中%00表示ascll码中的0,而ascll中0作为特殊字符保留表示字符串结束,
所以当url中出现%00就会认为读取已经结束。
文件内容检测:
(1):文件幻数检测:通常情况下,通过判断前十个字节,基本就能判断出一个文件的真实类型。
绕过方式:
制作图片马
1:使用16进制编辑器打开一个图片,在图片后面插入webshell
2:cmd指令制作
(2):php标签检测:
<?php echo md5('tag');?> 正常写法 可能会被过滤
<? echo md5('tag');?> 短标签写法
<script language='php' >echo md5('tag');?>
(3):二次渲染
就是根据用户上传的图片,新生成一个图片,将原始图片删除,将新图片添加到特殊的数据库中。
绕过:
先上传一张图片,在重新将图片下载下来作比较,然后在相同的地方,插入webshell
标签:文件,00,url,检测,CTFer,白名单,上传,图片 From: https://www.cnblogs.com/heck1ng/p/18024143