PHP提供了两种比较两个变量的方法:

  • 松散比较使用 == or != : 两个变量都具有“相同的值”。
  • 严格比较 === or !== : 两个变量都具有“相同的类型和相同的值”。

类型杂耍

真实陈述

var_dump('0010e2'   == '1e3');           # true
var_dump('0xABCdef' == ' 0xABCdef'); # true PHP 5.0 / false PHP 7.0
var_dump('0xABCdef' == ' 0xABCdef'); # true PHP 5.0 / false PHP 7.0
var_dump('0x01' == 1) # true PHP 5.0 / false PHP 7.0
var_dump('0x1234Ab' == '1193131');
'123'  == 123
'123a' == 123
'abc' == 0
'' == 0 == false == NULL
'' == 0 # true
0 == false # true
false == NULL # true
NULL == '' # true

空语句

var_dump(sha1([])); # NULL
var_dump(md5([])); # NULL

魔术哈希-漏洞利用

如果计算的哈希仅以“ 0e”(或“ 0..0e”)开头,后跟数字,则PHP将把哈希视为浮点数。

Hash “Magic” Number / String Magic Hash-魔术哈希
MD5 240610708 0e462097431906509019562988736854
SHA1 10932435112 0e07766915004133176347055865026311692244
SHA-224 10885164793773 0e281250946775200129471613219196999537878926740638594636
SHA-256 34250003024812 0e46289032038065916139621039085883773413820991920706299695051332
SHA-256 TyNOQHUS 0e66298694359207596086558843543959518835691168370379069085300385

<?php
var_dump(md5('240610708') == md5('QNKCDZO')); # bool(true)
var_dump(md5('aabg7XSs') == md5('aabC9RqS'));
var_dump(sha1('aaroZmOk') == sha1('aaK1STfY'));
var_dump(sha1('aaO8zKZF') == sha1('aa3OFF9m'));
?> 之前遇到的一个CTF实例:

最新文章

  1. 通过Http接口及SolrNet 两种方法基于Solr5.5.1 实现CURD
  2. CodeIgniter-Lottery - php ci 抽奖辅助函数
  3. java抽象-老师的生日-逻辑思维-有趣的面试题-遁地龙卷风
  4. 无需activity获得屏幕尺寸
  5. Ubuntu14.04 安装Gitlab
  6. IIS 部署 node.js ---- 基础安装部署
  7. angularJs内置指令63个
  8. angular 三目运算符 需要换色或style
  9. 理解Linux系统负荷
  10. spark Streaming的Receiver和Direct的优化对比
  11. Uva 208 - Firetruck
  12. Codeforces Gym 100425A Luggage Distribution 二分 数学
  13. 解决从VIM复制出来的代码格式错乱或对齐的问题
  14. ZUFE 1035 字符宽度编码(字符串)
  15. 3409: [Usaco2009 Oct]Barn Echoes 牛棚回声
  16. 云摘录︱Word2Vec 作者Tomas Mikolov 的三篇代表作解析
  17. Dagger2源码浅析
  18. gevent实现基于epoll和协程的服务器
  19. VXLAN, 一种叠加在L3网络上的L2网络
  20. IS-IS笔记

热门文章

  1. CSS定位属性position相关介绍
  2. 自然语言处理NLTK之入门
  3. UBB代码
  4. 钉钉小程序不用canvas在后端绘图前端用image标签获取图片的实践
  5. IEEE1588 PTP对时系统原理及特点
  6. java算法--循环队列
  7. 操作系统-schedule函数
  8. Oracle 11g rac中关于crsctl stop cluster/crs/has的区别
  9. 三星最先进EUV产线投用
  10. iframe 框架父页面刷新子页面