练习 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

相关文章

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

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

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

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

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

Java实现MD5加密的四种方式

《Java实现MD5加密的四种方式》MD5是一种广泛使用的哈希算法,其输出结果是一个128位的二进制数,通常以32位十六进制数的形式表示,MD5的底层实现涉及多个复杂的步骤和算法,本文给大家介绍了Ja... 目录MD5介绍Java 中实现 MD5 加密方式方法一:使用 MessageDigest方法二:使用

web网络安全之跨站脚本攻击(XSS)详解

《web网络安全之跨站脚本攻击(XSS)详解》:本文主要介绍web网络安全之跨站脚本攻击(XSS)的相关资料,跨站脚本攻击XSS是一种常见的Web安全漏洞,攻击者通过注入恶意脚本诱使用户执行,可能... 目录前言XSS 的类型1. 存储型 XSS(Stored XSS)示例:危害:2. 反射型 XSS(Re

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

SpringBoot整合easy-es的详细过程

《SpringBoot整合easy-es的详细过程》本文介绍了EasyES,一个基于Elasticsearch的ORM框架,旨在简化开发流程并提高效率,EasyES支持SpringBoot框架,并提供... 目录一、easy-es简介二、实现基于Spring Boot框架的应用程序代码1.添加相关依赖2.添

解决JavaWeb-file.isDirectory()遇到的坑问题

《解决JavaWeb-file.isDirectory()遇到的坑问题》JavaWeb开发中,使用`file.isDirectory()`判断路径是否为文件夹时,需要特别注意:该方法只能判断已存在的文... 目录Jahttp://www.chinasem.cnvaWeb-file.isDirectory()遇

JavaWeb-WebSocket浏览器服务器双向通信方式

《JavaWeb-WebSocket浏览器服务器双向通信方式》文章介绍了WebSocket协议的工作原理和应用场景,包括与HTTP的对比,接着,详细介绍了如何在Java中使用WebSocket,包括配... 目录一、概述二、入门2.1 POM依赖2.2 编写配置类2.3 编写WebSocket服务2.4 浏

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去