PHP弱比较-MD5

[题目信息]:

题目名称题目难度
PHP弱比较-MD51

[题目考点]:

PHP是弱类型语言,不需要明确的定义变量的类型,变量的类型根据使用时的上下文所决定,也就是变量会根据不同表达式所需要的类型自动转换,比如求和,PHP会将两个相加的值转为long、double再进行加和。每种类型转为另外一种类型都有固定的规则,当某个操作发现类型不符时就会按照这个规则进行转换,这个规则正是弱类型实现的基础。

[Flag格式]:

SangFor{XlR0R_Aixi9e0toz}

[环境部署]:

docker-compose.yml文件或者docker tar原始文件。

http://分配ip:2005

[题目writeup]:

1、实验主页

2、解题过程

访问题目后没有源代码信息,进行扫描目录。得到web.rar文件

打开压缩包后得到源代码

<?php
                                    if (isset($_POST['name']) and isset($_POST['password'])) {
if ($_POST['name'] == $_POST['password']) echo '用户名和密码不能相同'; else if (md5($_POST['name']) == md5($_POST['password'])) die('Flag: '.$flag); else echo '密码错误'; } else{ echo '请登录'; } ?&gt; 

3、源码分析

分析代码逻辑,首先通过isset函数确认变量是否设置,且变量$_POST[‘name’]和$_POST[‘password’]的原值不能相同。但若$_POST[‘name’]和$_POST[‘password’]的MD5值相同则可得到flag。

由于php代码在作比较时使用了弱比较,则可以使用MD5函数无法处理数组的特性来进行绕过

POST:
name[]=1&password[]=2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值