练习 19 Web [BJDCTF2020]Easy MD5

2024-04-04 17:28
文章标签 web 练习 19 easy md5 bjdctf2020

本文主要是介绍练习 19 Web [BJDCTF2020]Easy MD5,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

如果你是第一批做这个题的,这道题一点也不easy

打开在前端代码里面看到,输入框输入的内容实际是’password’
在这里插入图片描述
随意输入内容,查看响应header中的内容有一句SQL代码,可知我们要让password在md5后返回值为true
在这里插入图片描述

然后尬住,开搜

MD5碰撞
总结ctf中 MD5 绕过的一些思路
ffifdyop——绕过中一个奇妙的字符串
BJDCTF2020 Easy MD5(详细
BUUCTF [BJDCTF2020]Easy MD5 详解
sql注入:md5($password,true)

根据以上信息
在其他wp和博客中得知:
md5函数在指定了true的时候,是返回的原始 16 字符二进制格式。也就是说会返回这样子的字符串:'or’6\xc9]\x99\xe9!r,\xf9\xedb\x1c
然后就会拼接成:

select * from 'admin' where password=''or'6.......'

这句在MySQL 中会形成“永真”,和常规的sql注入password=''or’1逻辑一致

要注意本题中password= 后面直接就是md5()函数
返回的字符串本是'or'6.......
得到为什么不是 password='or' 6 ,而password=' 肯定会报错
原因是,md5()函数返回值的类型是字符串,会再带一对 ''
所以得到的确实是password=''or' 6........'

这要令password的值在md5加密后

在其他wp中,知道了ffifdyop这个特殊字符串,刚好符合'or'6

ffifdyop绕过原理是:
ffifdyop 这个字符串被 md5 哈希了之后会变成 276f722736c95d99e921722cf9ed621c,这个字符串前几位刚好是 ’ or ‘6
而 Mysql 刚好又会把 hex 转成 ascii 解释,因此拼接之后的形式是 select * from ‘admin’ where password=’ ’ or ‘6xxxxx’,等价于 or 一个永真式
,因此相当于万能密码,可以绕过md5()函数。

输入ffifdyop后,得到:
在这里插入图片描述
查看前端代码,看到一段注释的代码
在这里插入图片描述

<!--
$a = $GET['a'];
$b = $_GET['b'];if($a != $b && md5($a) == md5($b)){// wow, glzjin wants a girl friend.
-->

这个在我的练习4,我遇到过,直接输入两个数组类型并且不一样的值就能绕过
因为md5函数输入数组返回null
null =null成立
payload:?a[]='123'&b[]='1234'
成功,又看到了一组代码
在这里插入图片描述

这一组也是一样的解法,数组绕过md5
在这里插入图片描述

flag{bb709a3d-2f98-41f9-b26c-5dd79df15d4a}

这篇关于练习 19 Web [BJDCTF2020]Easy MD5的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/876401

相关文章

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

SpringBoot项目Web拦截器使用的多种方式

《SpringBoot项目Web拦截器使用的多种方式》在SpringBoot应用中,Web拦截器(Interceptor)是一种用于在请求处理的不同阶段执行自定义逻辑的机制,下面给大家介绍Sprin... 目录一、实现 HandlerInterceptor 接口1、创建HandlerInterceptor实

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

Python使用Reflex构建现代Web应用的完全指南

《Python使用Reflex构建现代Web应用的完全指南》这篇文章为大家深入介绍了Reflex框架的设计理念,技术特性,项目结构,核心API,实际开发流程以及与其他框架的对比和部署建议,感兴趣的小伙... 目录什么是 ReFlex?为什么选择 Reflex?安装与环境配置构建你的第一个应用核心概念解析组件

Java如何将文件内容转换为MD5哈希值

《Java如何将文件内容转换为MD5哈希值》:本文主要介绍Java如何将文件内容转换为MD5哈希值的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java文件内容转换为MD5哈希值一个完整的Java示例代码代码解释注意事项总结Java文件内容转换为MD5

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

使用easy connect之后,maven无法使用,原来需要配置-Djava.net.preferIPv4Stack=true问题

《使用easyconnect之后,maven无法使用,原来需要配置-Djava.net.preferIPv4Stack=true问题》:本文主要介绍使用easyconnect之后,maven无法... 目录使用easGWowCy connect之后,maven无法使用,原来需要配置-DJava.net.pr

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加