php代码审计|php代码审计 strcmp和MD5函数漏洞
文章图片
通过get得到三个值,v1,v2,v3。
if第一层判断,v1和v2得到的值不一样,但是对它们进行md5加密后的值得相等。
if第二层判断,v3得到的值得和$flag的值相等,满足这两个条件输出flag。
一 先解决第一层,php的MD5函数漏洞:
①通过== 或者 !=比较两个哈希字符串的时候,如果哈希字符串都以0E开头,则会判断相等。
②MD5不能比较数组,比如v1[]=1,v2[]=2,MD5也判断相等,实质上都判断为 null。
所以绕过方法/?v1[]=1&v2[]=2
或者找些md5加密后都是0E开头的字符串:/?v1=s878926199a&v2=s155964671a
。
二 第二层,php的strcmp函数漏洞
strcmp(str1,str2)比较两个字符串,如果相等就返回0。
【php代码审计|php代码审计 strcmp和MD5函数漏洞】在5.3版本前,如果传入的不是字符串,那么会报错,并且return 0,返回0就代表相等了。
绕过strcmp就想办法传入数组吧,只需要v3[]=3即可。
最终构造:
http://118.89.219.210:49162/?v1[]=1&v2[]=2&v3[]=1
转载于:https://www.cnblogs.com/zaqzzz/p/9588638.html
推荐阅读
- CVE-2020-16898|CVE-2020-16898 TCP/IP远程代码执行漏洞
- thinkphp|thinkphp 3.2 如何调用第三方类库
- CGI,FastCGI,PHP-CGI与PHP-FPM
- 不废话,代码实践带你掌握|不废话,代码实践带你掌握 强缓存、协商缓存!
- 工具|后天就是七夕节,你准备好了吗(送上几个七夕代码,展示你技能的时候到了!)
- 《机器学习实战》高清中文版PDF英文版PDF+源代码下载
- 霍兰德职业代码对照表
- Hexo代码块前后空白行问题
- 前端代码|前端代码 返回顶部 backToTop
- 11-代码注入