怎么建立本地网站,南京建筑公司,移动网站seo,现在网络推广方式哈希#xff08;md5#xff09;绕过问题
本质上是弱类型问题的延申
题型
登录的哈希验证
$a ! $b
Md5($a) md5($b)
解决办法Md5绕过
var_dump (0e123456 0e4456789); //true
0e545993274517709034328855841020//true
参考资料0e开头的哈希…哈希md5绕过问题
本质上是弱类型问题的延申
题型
登录的哈希验证
$a ! $b
Md5($a) md5($b)
解决办法Md5绕过
var_dump (0e123456 0e4456789); //true
0e545993274517709034328855841020//true
参考资料0e开头的哈希看一下哈希函数0e开头的md5-CSDN博客文章浏览阅读2.5k次点赞9次收藏41次。这篇博客揭示了一个PHP处理哈希值的潜在安全问题。当哈希值以0E开头时PHP会将其解释为0允许攻击者通过特定构造的0E开头字符串模拟匹配数据库中的哈希值从而可能非法登录。文章列举了一系列0E开头的MD5哈希值示例强调了这一漏洞可能带来的风险。https://blog.csdn.net/weixin_45897324/article/details/108961503?fromshareblogdetailsharetypeblogdetailsharerId108961503sharereferPCsharesource2401_88743143sharefromfrom_linkhttps://blog.csdn.net/weixin_45897324/article/details/108961503?fromshareblogdetailsharetypeblogdetailsharerId108961503sharereferPCsharesource2401_88743143sharefromfrom_link
题目进阶
登录的哈希验证 v2
$a ! $b
Md5($a) md5($b)
解决办法数组 Warning: md5() expects parameter 1 to be string, array given in php shell coden line 1数组的话返回警告但不会报错仍然会执行但是返回Null
null null
md5(array) - null
知识点
如何将a变为数组在a后面加【】 如果想加个元素
...........test.php?a[la1a[]a2a[]a3
题目
题目思路
1.通过URL传一个$a 是数组 2. 检查$a[0]和$a[1] 很严格的过滤 3. 取$a数组的前两个元素做拼接 执行危险命令 涉及知识点题目 2020.10.24 上海 Geekpwn 解答方法 ?a[3]命令注入的payloada[4]payloada[0]正常a[1]正常
........test.php?a[2]a1a[3]a2a[0]a3a[1]a4
Md5 ($a)
题目进阶
登录的哈希验证 v3
(string) $a ! (string) $b
Md5 ($a) md5($b)
参考资料
MD5加密在CTF中的弱强比较与解题策略-CSDN博客
Md5碰撞 两个不同的东西拥有相同的md5: 知识点
需要绕过 intval(),由于 intval()可以处理的不仅仅是十进制,还有八进制、十六进制、 科学计数法等。写个测试脚本
? php $a $_GET[a]; echo intval($a) . ; echo intval($a1);
传入 1e5,输出:1 100001,绕过成功——1 100001
首先 $a 是字符串所以 intval()返回了字母前的数字,也就是 e 前面的 1
echo intval(1e10); // 1410065408
echo intval(1e10); // 1
然后 $a1 进行了字符串与数字相加的运算,在php 中,这种结果取决于这个字符串长什么样,就$a1 来讲:
$a 数字开头、中间有其他字母,比如 123y1ng,将 $a 从字符串转数字,转换结果为开头的数字,实际运算 1231
$a 字母开头,比如 y1ng,转数字结果为0,实际运算为 01
$a 是 1e5 这种科学计数法形式,先转成 1×10^5 也就是 10000,再100001
所以输入了 1e5,在进行加一之后,就从 1 变成了 100001,绕过成功
题目进阶
题目http://b.y1ng.vip:2031/1.php
第二层 $md5 md5($md5)
需要一个md5 和md5(md5)都是0e开头
解答
1.看源码 注意md5不一定是有可能只是普通字符串 变量覆盖问题
用传参的值替换掉原有变量的值
? php
$a abc; $a def;将abc覆盖
实例将键值“Cat”、“Dog”和“Horse賦值给变量$a、$b和$c:
涉及函数
1.Extract()
定义和用法 extract() 函数从数组中将变量导入到当前的符号表。 该函数使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变量。 该函数返回成功设置的变量数目。
语法 extract (array,extract_rules,prefix) 2.Parse_str()
定义和用法
parse_str()函数把查询字符串解析到变量中。 对a进行变量覆盖md5弱类型
?ida[]s878926199a