php函数漏洞的示例分析

  介绍

这篇文章主要介绍了php函数漏洞的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

php是世界上最好的语言,是的,php在世界上养活了两类人,一类是编写php代码的人,一类是从事安全×××的这类人,因为在php中存在着有漏洞的函数。
在一定条件作用下,这些函数没有按着函数发明者的意愿去解析。
在周大福的web世界中也算待了几个月了,对学习当中的遇到的有问题的函数略做一下总结。

<强> md5()函数

<>之前定义:md5()函数计算字符串的md5散列

问题1:经过md5()函数处理的字符串散列如果出现0 e开头的,在被php处理的时候会被认为等于0。
源码:

 & lt; ? php
  ,,,$ user=$ _GET[& # 39;用户# 39;];
  ,,,通过美元=$ _GET[& # 39;通过# 39;];
  ,,,如果($ user !=通过美元){
  ,,,,,,,如果(md5(用户)美元,==,md5(通过美元)){
  ,,,,,,,,,,,echo “却;能够is  flag";
  ,,,,,,,}
  ,,,,,,,其他的{
  ,,,,,,,,,,,echo “no  no  no";
  ,,,,,,,}
  还有,,,}{
  ,,,,,,,echo “字符串不能相同“;
  ,,,}
  
  祝辞;

代码功能:判断得到方法传入的参数的MD5的散列字符串是否相等,并且是在两参数值不相等的情况下。
测试结果:
 php函数漏洞的示例分析

原理分析:
当两个字符串被MD5加密的时候,会产生以0 e开头的哈希值。php进行判断的时候0 e…会被看成科学计数法,0的n次方都是等于零。所以这两个字符串被MD5()加密后都等于零。
var_dump (0==0 e123456)
 php函数漏洞的示例分析“> <br/>问题2:处理数组的时候返回为空<br/>源码:</p> <pre> & lt; ? php
  ,,,$ user=$ _GET[& # 39;用户# 39;];
  ,,,通过美元=$ _GET[& # 39;通过# 39;];
  ,,,如果($ user !=通过美元){
  ,,,,,,,如果(md5(用户)美元,==,md5(通过美元)){
  ,,,,,,,,,,,echo “却;能够is  flag

测试:
 php函数漏洞的示例分析

原理分析:
md5(字符串,生)语法:字符串必须,规定要计算的字符串,生可选,规定输出格式,TRUE-16字符二进制格式;假——默认,32字符十六进制数。
函数作者规定处理的字符串类型为str字符串型,才能正常输出。传递数组无法处理。造成输出结果为空

问题3:造成sql注入漏洞

某些查询语句,特别是查询密码的时候,往往会使用md5()函数处理后再去数据库查询对比,这样就会造成一些风险。
查询语句:
从用户选择 passwd=?md5(美元密码,真实),
这个地方有一个特殊的字符串可以绕过,在你不知道密码的情况下查询到用户表的内容。
字符串:ffifdyop
测试:
 php函数漏洞的示例分析“> <br/>可以看到字符串被md5()加密后成为了”或“6…<br/>添加到查询语句中就变成了<br/>从用户在密码选择</em>=这时候我们将加密后的东西拿去到数据库查询一下。
 php函数漏洞的示例分析“> <br/>看可以将数据库中的所有的数据全部查出。<br/>原理分析:<br/>或语句就不在赘述,只说一下,数据库中的操作,在查询的时候,哪里的后面并不一定非要跟上参数才能够查询。<br/> <img src=php函数漏洞的示例分析