当前位置: 首页 > news >正文

北京网站建设培训网站建设先进个人材料

北京网站建设培训,网站建设先进个人材料,家具网站后台模板,湖南建筑公司网站1、 和 两个等号是弱比较,使用进行对比的时候,php解析器就会做隐式类型转换,如果两个值的类型不相等就会把两个值的类型转为同一类型进行对比。是强对比,比较类型和数值是否正确var_dump(0 pay);//true var_dump(0e1234567890);/…

1、== 和 ===

两个等号==是弱比较,使用==进行对比的时候,php解析器就会做隐式类型转换,如果两个值的类型不相等就会把两个值的类型转为同一类型进行对比。

===是强对比,比较类型和数值是否正确

var_dump(0 == 'pay');//true
var_dump('0e123456789'==0);// bool(true)
var_dump('0e123456789'=='0');// bool(true)
var_dump('0e1234abcde'=='0');// bool(false)

应用场景:后台登陆,账号密码比对,用MD5加密

代码逻辑:

$user=$_GET['username'];

$pass=MD5($_GET['password']);

这里上面任意的pwd都可以登录成功,因为加密后都是0e开头的数据

pwd=240610708 QNKCDZO s1885207154a
$a = $_GET['pwd'];
$password = "0e50936721341820084200876514";  //注意:这里管理员密码md5的值是以0e开头的,如果没有看到0e而直接去解md5九成是解不出来的
if(md5($a) == $password){  //注意:这里是两个等号"=="进行判断,若是"==="则不存在弱类型hash比较缺陷echo 'you are logined!';
}else{echo 'fuck';
}payload:
?pwd=0exxxxxxxxx

2、MD5对比缺陷

进行hash加密出来的字符串如存在0e开头进行弱比较的话会直接判定为true

这里弱类型可以创造一个账号密码,发现密码是md5加密,前面有0e开头,那么任意0e开头都可以登录成功

QNKCDZO

0e830400451993494058024219903391

240610708

0e462097431906509019562988736854

s878926199a

0e545993274517709034328855841020

s155964671a

0e342768416822451524974117254469

s214587387a

0e848240448830537924465865611904

s214587387a

0e848240448830537924465865611904

s878926199a

0e545993274517709034328855841020

s1091221200a

0e940624217856561557816327384675

s1885207154a

0e509367213418206700842008763514

3 函数strcmp类型比较缺陷

低版本的strcmp比较的是字符串类型,如果强行传入其他类型参数,会出错,出错后返回值0,正是利用这点进行绕过

$password="***************";//这里输入这些星星就是成功的,
if(isset($_GET['password'])) {if (strcmp($_GET['password'], $password) == 0) {echo "Right!!!login success";exit();} else {echo "Wrong password..";}
}payload:
test?password[]=xxxx

4、函数Bool类型比较缺陷

在使用 json_decode() 函数或 unserialize() 函数时,部分结构被解释成 bool 类型,也会造成缺陷,运行结果超出研发人员的预期

//在使用 json_decode() 函数或 unserialize() 函数时,部分结构被解释成 bool 类型,也会造成缺陷,运行结果超出研发人员的预期
//$str = '{"user":true,"pass":true}';$str=$_GET['s'];
$data = json_decode($str,true);
if ($data['user'] == 'xiaodi' && $data['pass']=='xiaodisec')
{print_r(' 登录成功! '."\n");
}else{print_r(' 登录失败! '."\n");
}payload:
test.php?s={"user":"xiaodi","pass":"xiaodisec"}
test.php?s={"user":"true","pass":"true"}

这里就是反序列化,s就是string,后面4就是4位数字符,改成b就是bool运算,1就是成功,因此可以绕过

//预期:a:2:{s:4:"user";s:4:"root";s:4:"pass";s:6:"xiaodi";}
//绕过:$str = 'a:2:{s:4:"user";b:1;s:4:"pass";b:1;}';
$str=$_GET['s'];
$data = unserialize($str);
if ($data['user'] == 'root' && $data['pass']=='xiaodi')
{print_r(' 登录成功! '."\n");
} else{print_r(' 登录失败! '."\n");
}

5、函数switch 类型比较缺陷

当在switch中使用case判断数字时,switch会将参数转换为int类型计算

当在 switch 中使用 case 判断数字时,switch 会将其中的参数转换为 int 类型进行计算
$num =$_GET['n'];
switch ($num) {case 0:echo "say none hacker ! ";break;case 1:echo "say one hacker ! ";break;case 2:echo "say two hacker ! ";break;default;echo "I don't know ! ";
}payload:
test.php?n=0
输出echo "say none hacker !test.php?n=1
输出echo "say one hacker !test.php?n=0daasdawdads
依然输出echo "say none hacker !

6、函数in_array数组比较缺陷

当使用in_array()或array_search()函数时,如果第三个参数没有设置为true,则in_array()或array_search()将使用松散比较来判断

$array=[0,1,2,'3'];
var_dump(in_array('abc', $array));//true
var_dump(array_search('abc', $array));//0: 下标
var_dump(in_array('1dsdsdsbc', $array));//true
var_dump(array_search('1bc', $array));//1: 下标

7、===数组比较缺陷

注意此时遇到的是 “===” ,不过也不是代表无从下手。在md5()函数传入数组时会报错返回NULL,当变量都导致报错返回NULL时就能使使得条件成立。

三个等号用外部条件MD5,MD5是一个32位16进制数组,long类型,然后long===long就对了

$flag = 'flag{test}';
if (isset($_GET['username']) and isset($_GET['password'])) {if ($_GET['username'] == $_GET['password'])print 'Your password can not be your username.';else if (md5($_GET['username']) === md5($_GET['password']))die('Flag: '.$flag);elseprint 'Invalid password';
}?>payload:

代码审CMS:

https://mp.weixin.qq.com/s/k1hRg7cmRwwJJyyX04Ipmg

这里开一个代码审计靶场

这里注册一个账号ruler,密码为QNKCDZO

这里我们登录成功后退出一下

使用240610708这个密码也能登录成功,这就是MD5对比缺陷的漏洞

这里两个密码的MD5值:

QNKCDZO

0e830400451993494058024219903391

240610708

0e462097431906509019562988736854

都是0e开头的md5值因此这里就用了md5对比缺陷造成登录成功

攻击条件成功必须是密码加密是0e的,这里要求就很高

看下源碼

http://www.dtcms.com/a/399930.html

相关文章:

  • 【 GUI自动化测试】GUI自动化测试(一) 环境安装与测试
  • 如何将ISO20000的SLA与服务器响应时间有效结合?
  • 贺福建舰电磁弹射上线
  • wordpress网站分享到朋友圈小项目加盟
  • 牛客:多项式输出
  • 构建一个支撑10万设备的虚拟电厂IoT平台
  • Linux 中,`pip install`与 `apt install`
  • 宁波优质网站制作哪家好晋中市科技馆网站建设
  • SPA中篇【德国篇】钢铁齿轮与数字神经:跨国汽配巨头SPA并购整合攻坚记
  • 十大拿货网站注册app短信验证码平台
  • 山东莱州市建设局网站广西住房城乡建设厅
  • 企业网站构建方案大数据营销系统软件
  • Mysql(二十二)——InnoDB页结构
  • 亮数据|智能IDE与爬虫MCP实战
  • 网站开发的前端到底是什么建设项目一次公示网站
  • 动态做网站丰台新乡网站建设
  • 建设企业网站服务器电商网站建设制作
  • Linux安全 | 防火墙工具 iptables 详解
  • Matlab通过GUI实现点云的最远点下采样(Farthest point sampling)
  • 品牌设计公司哪家好网站可以做多少优化关键词
  • RK3588+MCU机器人控制器解决方案
  • JavaScript内存泄漏与闭包详解:从原理到实践
  • ARM芯片架构之CoreSight Programmers‘ Model 深入解析
  • Video-XL-2论文阅读
  • 在网站建设工作会议上讲话网站安全管理制度
  • JAVA第一阶段结束喽后天更新第二阶段至于明天当然是练习时间回顾一下之前学的太良心了
  • 专业门户网站建设用流媒体做的电台网站
  • python(74) 调用dll文件
  • 国家关于网站信息建设管理文件郴州市人口
  • 温州市城市建设档案馆网站公司宣传册排版