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。
在5.3版本前,如果传入的不是字符串,那么会报错,并且return 0,返回0就代表相等了。
绕过strcmp就想办法传入数组吧,只需要v3[]=3即可。
最终构造:
http://118.89.219.210:49162/?v1[]=1&v2[]=2&v3[]=1												
											php代码审计 strcmp和MD5函数漏洞的更多相关文章
- PHP中MD5函数漏洞
		
题目描述 一个网页,不妨设URL为http://haha.com,打开之后是这样的 if (isset($_GET['a']) and isset($_GET['b'])) { if ($_GET[' ...
 - php漏洞 md5函数漏洞
		
0x01: 背景:php在处理哈希值时,用!=和==来比较的时候,如果哈希字符串以0E开头的时候,哈希值会默认为0,所以两个不同的字符串经过md5加密成哈希值,如果哈希值开头是0E的话,会默认成相等. ...
 - 代码审计-md5()函数
		
<?php error_reporting(0); $flag = 'flag{test}'; if (isset($_GET['username']) and isset($_GET['pas ...
 - php strcmp函数漏洞
		
strcmp函数漏洞 适用5.3版本以前的php 函数作用:字符串比较 要求传入字符串.如果传入非字符串呢? 结果函数报错!但是函数返回“0” . 虽然报错了但函数的判断却是“相等” 如何传入非字符 ...
 - PHP 函数漏洞总结
		
1.MD5 compare漏洞 PHP在处理哈希字符串时,会利用"!="或"=="来对哈希值进行比较,它把每一个以"0E"开头的哈希值都解释 ...
 - PHP代码审计02之filter_var()函数缺陷
		
前言 根据红日安全写的文章,学习PHP代码审计审计的第二节内容,题目均来自PHP SECURITY CALENDAR 2017,讲完这个题目,会有一道CTF题目来进行巩固,外加一个实例来深入分析,想了 ...
 - PHP代码审计04之strpos函数使用不当
		
前言 根据红日安全写的文章,学习PHP代码审计的第四节内容,题目均来自PHP SECURITY CALENDAR 2017,讲完题目会用一个实例来加深巩固,这是之前写的,有兴趣可以去看看: PHP代码 ...
 - mysql的password()函数和md5函数
		
password用于修改mysql的用户密码,如果是应用与web程序建议使用md5()函数, password函数旧版16位,新版41位,可用select length(password('12345 ...
 - javascript中使用md5函数
		
javascript中使用md5函数 这对于js来讲本来是没有的,现在可以自己定义一个md5的函数,达到加密效果. var hexcase = 0; function hex_md5(a) { if ...
 
随机推荐
- 【extjs6学习笔记】0.4 准备: 书籍与文档
			
Ext JS 6 By Example Ext JS Essentials Learning Ext JS - Fourth Edition Ext JS 6: Getting Started htt ...
 - linux中python安装
			
1.查看当前环境中是否存在python安装包 [zyj@localhost ~]$ rpm -qa | grep python gnome-python2-gnome--.el6.x86_64 pyt ...
 - Shell脚本 - 用来检查memcache并自动重启生效脚本
			
#!/bin/sh#check memcache process and restart if downmm_bin="/usr/local/bin/memcached"mm_lo ...
 - TFS看板的迭代规划
			
故事点 故事点更多体现的是用户情景或者bug的规模,采用斐波拉契数列(1,2,3,5,8,13)这样的数字表示,包含如下内容: 相对工作量 复杂度 风险和不确定性 相对工作量 下面演示一个Case来说 ...
 - TFS看板的设计
			
列 产品开发的整个流程如下图,将流程配置到看板的列: 需求池-->就绪-->开发-->测试-->待验收 -->待发布 -->已关闭 一般将Bug和需求放在一块看版上 ...
 - 在RichTextBox控件中添加超链接文本
			
实现效果: 知识运用: RichTextBox控件的AppendText方法 public void AppendText{string textData} //向控件中添加文本内容 和Process ...
 - python剑指offer剪绳子
			
题目 给你一根长度为n的绳子,请把绳子剪成m段 (m和n都是整数,n>1并且m>1)每段绳子的长度记为k[0],k[1],…,k[m].请问k[0]k[1]…*k[m]可能的最大乘积是多少 ...
 - 操作系统(4)_进程同步_李善平ppt
			
生产者进程count++是它的临界区,消费者count--是它的临界区. 经典同步问题,死锁问题,略.
 - 在React中使用Redux数据流
			
问题:数据流是什么呢?为什么要用数据流? 答案:1.数据流是我们的行为与相应的抽象 2.使用数据流帮助我们明确了行为的对应的响应 问题: React与数据流的关系 1.React是纯 V 层的前端框架 ...
 - 自封装的AJAX
			
/* * *create by royal in 2019/1/23 * *royalAjax 自封装ajax函数 * *paramsObj JSON类型参数 *require params: * t ...