白盒审计绕过
黑盒测试(不知道对方代码),白盒测试(知道对方代码)
白盒测试
代码大致如下
同样代码用isset对参数进行校验,然后进行黑名单过滤(deny),同时将文件名称给file_name赋值,之后又删除了文件名末尾的点(针对.与空格绕过),之后又使用strrchr返回.后的文件后缀判断文件后缀(针对双写绕过),然后又将截取到的文件后缀进行小写转换(针对大小写绕过),同时又去除了后缀尾部的字符窜:$DATA(针对windows文件流),之后又对上传文件进行了移动和重命名
2、代码流程:.php. . .php.
1、删除文件末尾点->.php.空(因为删除文件末尾的点只执行了一次,若为循环则 .空. 这个方法就行不通了)
2、检测文件名中点并返回后所有字符
3、对.空 转换成小写
4、去除尾部空字符,剩.php
3、绕过:空.绕过Php..
(1) strrchr()
1功能:strchr()函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符
串结尾的所有字符。
2.语法:strrchr(string.char)
3.参数:
string 必需 规定要搜索的字符串。
char 必需 规定要查找的字符,如果该参数是数字,则搜索匹配此数字的ASCII值的字符。
%00与00截断绕过
该绕过方式属于GET,POST传参的绕过形式
1.%00和00截断定义:
在url中%00表示ascll码中的0,而ascii中0作为特殊字符保留,所以当url中出现%00时就会
认为读取已结束。等同于结束符。
2.限制条件:
(1) php<5.3.4
(2)php.ini中:magic_quotes_gpc参数设置为OFF
3.绕过具体操作:
分类:(分为get型与post型,区别就是%00和00)
get cookie型%00截断:
getcookie传参会经过url解码,所以可以通过直接在文件名后缀位置加上%00进行截断(post原理相同)
文件上传流量分析
1.上传的数据包中包含一句话木马
2.数据包中的文件后缀为黑名单中的类型 / 相似 / 具有相同解析方式
3.数据包中的文件名后缀是否为大小写 _ 或空格
4.数据包中的文件名后缀位置是否含有::DATA
5.数据包中的文件名后缀是否存在双写绕过
6.若为白名单则分析是否存在%00或00进行替换
7.若是图片码方式则将对方图片进行下载然后重命名观察图片中的流量或内容是否存疑